git stash の失敗: git stash pop でマージ競合が発生しました 質問する

git stash の失敗: git stash pop でマージ競合が発生しました 質問する

を実行した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

ベストアンサー1

見る男gitマージ紛争を解決する方法):

競合を確認した後、次の 2 つの操作を実行できます。

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

  • 競合を解決します。Git は作業ツリー内の競合をマークします。ファイルを編集して、git でインデックスに追加します。git commit を使用して完了です。

そして、真の融合(2. と 3. が何を指しているかを確認するには):

変更を調整する方法が明確でない場合は、次のことが起こります。

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

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

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

  4. ...

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

男のgitスタッシュオプション、ポップ) さらに以下もお読みください:

競合により状態の適用が失敗する場合があります。この場合、stash リストから削除されません。競合を手動で解決し、その後 git stash drop を手動で呼び出す必要があります。

おすすめ記事