![独自の Git サーバーをインストールし、許可を得た後にコードをプッシュする](https://rvso.com/image/36423/%E7%8B%AC%E8%87%AA%E3%81%AE%20Git%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%80%81%E8%A8%B1%E5%8F%AF%E3%82%92%E5%BE%97%E3%81%9F%E5%BE%8C%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E3%81%99%E3%82%8B.png)
私は RedHat 6.5 ボックスに Git サーバーをインストールしようとしています
。次のチュートリアルに従っています:1、2、3正直に言うと、読めば読むほど物事がわかりにくくなっていきます。
メイン リポジトリの所有者であり、コミットの実行も担当する Git ユーザーを作成する場合、開発者が不正なコードをプッシュするのを防ぐにはどうすればよいですか (gitolite など、これより新しいものはありますか)? コードがレビューされ、
プッシュを実行する権限が付与された場合にのみ開発者がプッシュできるようにする、Git サーバーの最もシンプルな構成は何ですか (Gitlab がほしいのですが、上司が許可しません)。
注: すべての開発者はサーバーへのsshアクセス権を持っています。私は彼らのssh.pubキーを収集しました。
答え1
あなたの質問に答えます:
メインリポジトリの所有者であり、コミットの実行も担当する Git ユーザーを作成する場合、開発者が不正なコードをプッシュするのを防ぐにはどうすればよいですか?
答えは、git ユーザーを作成しないことです。標準の UNIX ユーザーとグループを使用して、リモート リポジトリへのアクセス権限を制御できます。git プッシュは SSH 経由で機能するため、リポジトリをホストしているサーバーに SSH 接続でき、サーバー上のアカウントを介してリポジトリへの読み取りアクセス権を持っている限り、リポジトリの読み取り、クローン、およびプルを行うことができます。リポジトリへの書き込み権限も持っている場合は、コミットをプッシュすることもできます。
答え2
Git でデフォルトで有効になっているものの 1 つは次のとおりです。
git push --force
通常の場合、リポジトリでこれを常に無効にする必要があります:
git config --system receive.denyNonFastForwards true
プルリクエストが大量に発生するマージワークフローのシナリオでは問題が発生する可能性がありますが、常に最善の解決策は、開発者がgitを本当に理解し、コミットをあまり行わない(主にバージョン管理の性質を理解していないため)適切なマージと開発タスクの分離を行うことです。それが問題なければ、競合は少なくなります。適切なトレーニングと理解は常に最善です。また、ローカルでのコミットのリベースでこれを防ぐこともできます。2番目の代替案はおそらくGithubです。そのシナリオでは、権威あるリポジトリの重要なブランチに複数のメンテナーがプッシュできないようにします。