2011-07-26 6 views
5

私の同僚は私たちのgitリポジトリにミスをしました。私はいくつかの更新されたコードをコミットしたいと思いますが、私はgitを引っ張っていないので、結果としてHEADの後ろに1つのコミットがあります。彼の変更を完全に無視して、私が後ろにいれば、彼の間違いを取り除くことはできますか?前のgitコミットを完全にオーバーライド

+0

最初に元のバージョンに戻ります。あなたの変更をコミットします。 – Randy

+0

gitサーバーにアクセスする権限がありますか? –

+0

はい、アクセスしています。 – pqn

答えて

6

私は彼がを押したことを意味すると思います。中央のレポに悪いコミット。

もしそうなら、あなたはgit push -fを使用して、バージョンをプッシュすることができ、これはリポジトリを上書きします。もちろん、これはまた、歴史を中断します(fを意味する)ので、あなたの同僚(複数可)を再クローン中央レポをする必要があります。

+5

あなたの同僚は再クローンする必要はありません。ちょうど彼に、 'git fetch; git rebase origin/master '、または単純に' git pull --rebase 'を実行します。その後、彼は自分のコミットを修正するか、完全に削除する必要があります。 – cmcginty

8

他の回答のように強制的にプッシュすることもできますが、より安全な方法は変更を引き出すことです。git revert彼のコミットはすべての変更を完全に元に戻します。これにより、意図せずに変更が失われる危険はありません。

git pull 
git revert <treeish naming his commit> 
git push 
+0

コンパイルされたファイルの追加を防ぐために.gitignoreファイルを追加するのを忘れてしまいました。私はマージの競合を解決する方法があまりよく分かりません。 – pqn

+1

複数のチームで任意の種類のソースコントロールを使用している場合は、他の操作を行う前にマージの競合を調べることをお勧めします。それらを解決することは、定期的かつ不可欠な活動です。 Gitには、クロスプラットフォームの競合解消ツールであるkdiff3との統合機能が組み込まれています。それを設定すると良いスタートになるでしょう。私はGitに関する一連の記事を書いてきましたが、一つは[マージの競合を説明しています](http://shotgunsandpenguins.blogspot.com/2009/07/journey-to-git-part-v-merging.html)。あなたは一見するかもしれない。 –

関連する問題