202

私はgit stash pop実行し、マージの競合が発生しました。ファイル システムからファイルを削除し、git checkout以下に示すように実行しましたが、ファイルがまだマージされていないと見なされます。次に、ファイルを置き換えて、git checkoutもう一度同じ結果を試してみました。-fフラグでイベントを強制しようとしました。どんな助けでも大歓迎です!

chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   db/schema.rb
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       unmerged:   app/views/layouts/_choose_patient.html.erb
#       unmerged:   app/views/layouts/_links.html.erb

chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
4

5 に答える 5

221

man git merge競合を解決する方法)を参照してください。

競合を見た後、次の2つのことができます。

  • マージしないことを決定します。必要なクリーンアップは、インデックスファイルをHEADコミットにリセットして2.をリバースし、2。および3.によって行われた作業ツリーの変更をクリーンアップすることだけです。これにはgit-reset--hardを使用できます。

  • 競合を解決します。Gitは、作業ツリーの競合をマークします。ファイルを形に編集し、gitでインデックスに追加します。gitcommitを使用して取引を成立させます。

そして、TRUE MERGEの下で(2.と3.が何を指しているかを確認するため):

変更を調整する方法が明確でない場合、次のようになります。

  1. HEADポインタは同じままです。

  2. MERGE_HEAD refは、他のブランチヘッドを指すように設定されています。

  3. クリーンにマージされたパスは、インデックスファイルと作業ツリーの両方で更新されます。

  4. ..。

したがってgit reset --hard、作業ツリーからスタッシュの変更を削除するgit reset場合、またはインデックスをクリーンアップして作業ツリーの競合を手動でマージする場合に使用します。

man git stashOPTIONS、pop )の下で、さらに読むことができます:

状態の適用は、競合で失敗する可能性があります。この場合、スタッシュリストからは削除されません。競合を手動で解決し、後でgitstashdropを手動で呼び出す必要があります。

于 2010-05-15T16:56:23.923 に答える
45

私も似たようなことがありました。ファイルをまだステージングしたくなかったので、 で追加してgit addからgit reset. これは基本的に、変更を追加してからステージングを解除しましたが、マージされていないパスをクリアしました。

于 2012-05-04T17:10:31.530 に答える