2012-04-11 2 views
1

私のチームは最近、中断されたプルコマンドのためGITに多くの問題を抱えています。変更を取り込んでマージを中止するとGITがクリーンアップされないのはなぜですか?

ユーザーがインデックスにないローカルな変更をしていて、プルを実行した場合、マージをマスターに適用して中止しようとするgitの試みが見られました。チェックアウト全体は、ほぼ回復不可能なひどい状態に置かれます。以前は、GITはマージを試みる前にこれらの問題を特定するために何らかのチェックを実行すると思っていました。

クリーンな状態(コミットすることはありません)であっても、同じことが少なくとも1回ランダムに発生するのを見てきました。私はrebasingせずに、あなたが引っ張るときにマージ競合を解決することを余儀なくされるかもしれないことを理解していますが、これは起こっていることではありません。

私たちは、ギトライトを使用しています。私は主にコマンドラインを使用しており、まだこれらの問題にぶつかることはありません。残りのチームはgit-guiまたは1つのケースのTortoiseGitを使用しています。

のgit-guiのバージョン0.13.GITGUI
gitのバージョン1.7.8.msysgit.0
のTcl/Tkのバージョン8.5.1
TortoiseGit 1.7.6.0我々はできるだけ多くの枝で作業していない

私たちは可能ですが、これが機能しているはずです。
なぜGITはあなたが列車に入るときに引っ張ってみることができますか?
なぜGITは正常に中断しないのですか?

+0

3番目の段落では、リポジトリがgit pullを実行していない状態からホーゼド状態にコミットするのを見て、マージング状態にならずに中止したことを確認しました。 – user1326955

+0

私は同様の問題を抱えていますが、問題を一時的に "修正"できる唯一の方法の1つは、現在の作業用ローカルコピーを別の場所にバックアップし、最初のディレクトリ(.gitディレクトリを含む)ディレクトリ。そして、私はgitに新しいリポジトリを作成するように指示し、再びマスターリポジトリから 'pull 'することができます。 – stealthyninja

答えて

1

"git pull"は "git fetch + git merge"と同じです。だから、gitが中止すると、マージされます。

gitがブランチをマージしようとすると、できるだけ「できるだけ」実行されます。マージ可能なファイルはマージされ、自動的にマージできないファイルは "両方が変更された"状態になります。開発者は、ファイルを手動でチェックしてマージを完了する必要があります。

あなたが不完全な「gitのプル」(または「gitのマージ」)の後にクリーンな状態を好む場合、あなたは簡単にコマンドを使用して、マージの前に戻ってあなたの最後のリビジョンまで来ることができますで

git reset --hard my_local_branch 

をあなたのケースでは、私は "my_local_branch"が "マスター"だと思います。

+0

これは私がかなりよく理解しているGITの一部です。これは私が尋ねた質問には答えません。これにより、コミットされていないローカル変更がすべて削除されます。これにより、追加のコマンドを実行して未追跡のファイルを削除する必要があるため(次回の強制終了を引き起こす)、クリーンな状態にはなりません。 – user1326955

関連する問題