を実行した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. が何を指しているかを確認するには):
変更を調整する方法が明確でない場合は、次のことが起こります。
HEAD ポインタは同じままです。
MERGE_HEAD 参照は、他のブランチ ヘッドを指すように設定されます。
きれいにマージされたパスは、インデックス ファイルと作業ツリーの両方で更新されます。
...
したがって、git reset --hard
作業ツリーからスタッシュの変更を削除する場合、またはgit reset
インデックスをクリーンアップして作業ツリー内の競合を手動でマージするために残しておく場合に使用します。
下男のgitスタッシュ(オプション、ポップ) さらに以下もお読みください:
競合により状態の適用が失敗する場合があります。この場合、stash リストから削除されません。競合を手動で解決し、その後 git stash drop を手動で呼び出す必要があります。