2012-04-22 9 views
0

私はプロジェクトでいくつかの他の開発者と一緒に作業しています。私たちはバージョン管理のためにgitを使用しています。私たちは皆、さまざまな程度の小説家です。何らかの理由で、私たちの開発者のコ​​ミットの1つが新しい仕事を上書きしています - 他の開発者が変更をコミットし、すべてがうまくいきます - この開発者は変更をコミットし、新しい変更は古いバージョンで上書きされます。これは、それ自体の話題です(そして、どんな洞察も歓迎です)。1人の開発者からコミットを取り除く

私の質問は次のとおりです。履歴を調べてコミットを削除するにはどうすればよいですか?私はリベースを使いますか?チェリーピック?私が言ったように、私は多かれ少なかれ小学生の初心者であり、私は多くの経験を持つ人がいません。

+0

このデベロッパーが他のものを上書きしているのは、他の情報なしでは本当に言えません。誰かがマージ競合を解決していないかもしれません。履歴を見て(おそらくgitkを使って)、どこに問題があるかを見て、必要に応じて、彼がコミットするのを見たり、誰かが自分のものをマージして、何か違うことをしているのを見る。 – Cascabel

答えて

1

git filter-branchを使用してこれを行うことができます。これによりツリーが大幅に変更される可能性があるので、最初に複数のバックアップを作成し、結果を慎重に検証してください。

+0

複数のバックアップを持つことについて - これは私が新しいブランチを作成してそこに作成するものですか?もし私がそれを行うなら、私はマスターにそれを戻さなければならないでしょう - はい? – JoeM05

+0

私はファイルシステムレベルでgitディレクトリをバックアップすることを意味しました。フィルタの分岐がうまくいかないと、手元に緊急事態が発生しないようにします。 –

+1

@ JoeM05あなたは新しいブランチでそれを行うことができます。そのブランチにのみフィルタブランチを適用し、間違って他のブランチに適用してもブランチの前のポジションのバックアップを作成します。劇的な操作、それは完全に別のクローンでそれを行うだけで、安全で、簡単で、きれいです。 – Cascabel

関連する問題