2012-04-18 18 views
5

私たちは最近、 "git reset -hard"というインターンを走らせて、間違いなく私たちのメインGITリポジトリで多くの作業を元に戻しました。私たちは仕事を回復する過程にありますが、このようなことはもう起こらないと確信しています。GITでは、すでにプッシュされたコミットを変更または削除できないようにするにはどうすればよいですか?

私はこれについて多くの質問があることを知っていますが、それらはすべて防止よりもむしろ回復するようです。既にプッシュされているコミットを変更または削除する私たちのメインリポジトリにプッシュしないようにする方法はありますか?設定をしているのでしょうか、それともプッシュフックで仕事をしているのでしょうか?

+0

chmod - 再帰的700/path/to/git/repそして、管理者だけがメインのリポジトリを取得できるようにします。 –

+0

プッシュは、リモートリポジトリからのコミットを決して削除しません。それは枝を動かすかもしれないが、コミットはまだそこにある。 –

+0

@WilliamPursell: 'push -f'は、コミットを削除することがあります。 –

答えて

7

は2 configuration optionsは、あなたがこの問題を防ぐのを助けるためにあなたの中心(裸)レポに設定することができますがあります。

receive.denyNonFastForwards 
receive.denyDeletes 

最初のオプションは、すべての履歴だけを追加プッシュする必要があります。 git resetに続いてgit pushが拒否されます。

git push <origin> :<branch-to-delete>を使用してリモートブランチを削除した後、通常のgit pushと変更を加えて再度プッシュできるループホールが2つ目に閉じられます。

+0

これはまさに私が探しているもののようです。私はそれを試してみましょう。ありがとう! – Sean

関連する問題