33

ブランチまたはリポジトリへの強制プッシュを防ぐ方法はありますか?

重要なブランチの履歴が誤ってまたは意図的に書き換えられるのを防ぎたいです。大規模な開発チームでは、人々はこれにどのように対処しますか?

理想的には、リポジトリごとにいくつかのブランチをロックし、リポジトリの所有者以外のすべての人がそれらに強制的にプッシュできないようにすることができます。

4

2 に答える 2

32

pre-receiveこれは、フックを使用して Git で簡単に実行できます。もちろん、これには実際にフックをインストールできることが必要であり、明らかな理由から、GitHub はサーバー上で実行する任意の実行可能ファイルをアップロードすることを許可していません :-)

一般に、Git や実際の分散型バージョン管理システムのワークフローでは、他の人が自分のリポジトリにプッシュできないようにします。代わりに、あなたは彼らのものから引っ張ります。これには、はるかに低いレベルの信頼が必要です。したがって、これは回避策その 1 です。プッシュさせず、フォークさせてからプルさせます。そうすれば、リポジトリに入れるものを制御できます。

別の回避策として、所有するサーバーに独自のステージング リポジトリをセットアップし、独自の Git フックをインストールすることもできます。pre-receive早送りでない場合にプッシュを拒否するフックと、post-receiveすべてのプッシュを自動的に GitHub に転送するフックを構成できます。もちろん、これはそもそも GitHub を使用するメリットの多くを失うことを意味します。

3 番目の回避策として、複数のリポジトリを使用できます。これは、他の 2 つのアプローチを組み合わせたものです。コラボレーターがプッシュできるリポジトリと、最初のリポジトリからプルする自分だけがアクセスできる別のリポジトリを用意します。

いずれにせよ、これは便利な機能のように見えるため、GitHub に機能リクエストを提出する必要があります (特に有料の顧客の場合は!)。

于 2011-02-23T17:47:05.980 に答える
17

GitHub は、「保護されたブランチ」機能を発表しました。

[...] Protected Branches と呼ばれる新機能により、リポジトリ管理者は特定のブランチへの強制プッシュを無効にすることができます。[...] リポジトリ設定の [ブランチ] タブに移動し、ブランチを保護します。

ソース: https://github.com/blog/2051-protected-branches-and-required-status-checks

リポジトリ > 設定 > ブランチ

于 2015-06-08T07:21:37.037 に答える