2012-02-04 11 views
49

私はGitリポジトリにプッシュしようとするたびに、私はこの取得:Git "あなたはマージを完了していません"と何もコミットしませんか?

You have not concluded your merge (MERGE_HEAD exists). 
Please, commit your changes before you can merge. 

git statusを実行し、私は得る:

# On branch master 
nothing to commit (working directory clean) 

または実行中のgit ls-files -u私は何を取得。

git add .を実行してもう一度試してみてください。

どうしたのですか?

答えて

87

私はついに答えを見つけました:git commit -m "Test"明らかにこれを修正しました。結果は何も変更されていない空のコミットでした。 Githubでも空のコミットが表示されますが、機能します。

+1

thaaaaank youuuuuuuuu! – koenmetsu

+1

私にとってこれはマージポイントを示すコミットとして現れたので、「マスターにdevをマージする」のようなメッセージは「テスト」よりも適切でしょう。 –

+1

うわー。今はなぜ誰かがこの動作を説明できますが、 'git commit'は動作しません。 – user1205577

46

空のマージコミット(2つの親)か空のコミットで終わったのですか?後者の場合、.git/MERGE_HEADを削除できました。

更新:手でMERGE_HEADを削除のではなく、あなたも使用することができgit merge --abortas of git 1.7.4)またはgit reset --mergeas of git 1.6.2)。

実際にマージが進行中でコミットが必要な場合は、少なくとも--no-commitと指定した場合、少なくとも1.8.3(おそらくそれ以前)のメッセージが表示されるはずです。 ):あなたがこれを見ると、まだMERGE_HEAD警告を取得しない場合

# On branch master 
# All conflicts fixed but you are still merging. 
# (use "git commit" to conclude merge) 
# 
nothing to commit, working directory clean 

、何かを台無しにされ、あなたはおそらくちょうど--abortクリーンな状態に戻って取得する必要があります。コメントマージ中

から

追加の詳細は、Gitはでマージについての情報を追跡するために、(次のHEAD、ORIG_HEAD、おそらくFETCH_HEADなどに).gitフォルダのルートにMERGE_HEADファイルを作成します進捗状況(具体的には、現在のHEADにマージされているコミットのSHA)。これを削除すると、Gitはマージが進行中であるとはもはや考えません。明らかに、マージが実際に進行中であれば、このファイルを削除したくないでしょう。

+2

これはgitで頻繁に起こるので、このソリューションは空のマージよりも便利です。 –

+0

ありがとうございます。私はそれを本当に理解して欲しいです。私は時間があるとき、私はドキュメントを熟読するだろうと思います。 – Taylor

+3

マージの間、gitは '.git'フォルダのルート(' HEAD'、 'ORIG_HEAD'、おそらく' FETCH_HEAD'など)のルートに 'MERGE_HEAD'ファイルを作成して、進行中のマージに関する情報を追跡しますコミットのSHAが現在の「HEAD」にマージされます)。これを削除すると、Gitはマージが進行中であるとはもはや考えません。明らかに、 'merge'が実際に進行中であれば、このファイルを削除したくないでしょう。 – dahlbyk

7

私の人生保護者はgit resetコマンドでした。

関連する問題