別のブランチからの変更をマージしましたが、リモートブランチでファイルが削除されたが、ローカルブランチで変更があったため、競合が発生しています。
ファイルを削除したいのですが、git rm path/to/file
を試しましたが、file: needs merge
と表示されます。ファイルを削除してマージをコミットする最良の方法は何ですか?
--force
パラメーターを使用してみてください。
git rm --force <file>
ファイルをファイルシステムに保持したい場合:
git rm --cached <file>
git rm path/to/file
を試しましたが、ファイルと表示されます:needs merge
Git 2.23(Q3 0219、7年後)ではそのエラーメッセージは表示されなくなります
「git rm
」は、混乱していたパスを実際に削除する前に、内部メッセージ「needs merge
」をリークするために使用された競合するパスを解決します。
これは修正されました。
commit b2b1f61 (17 Jul 2019)by Junio C Hamano(gitster
) を参照してください。
(Merged by Junio C Hamano --gitster
- in commit 5e9d978 、25 Jul 2019)
rm:削除による解決は警告に値するイベントではありません
パスの競合を解決して削除する場合は、「
git rm
」を使用するのが標準的な方法です。
ただし、その操作中、ユーザーには「needs merge
」メッセージが表示されます。$ git merge side-branch $ edit conflicted-path-1 $ git add conflicted-path-1 $ git rm conflicted-path-2 conflicted-path-2: needs merge rm 'conflicted-path-2'
「
git rm
」による削除は実行されますが、初心者のユーザーは混乱を招く可能性があります。
"needs merge
?それで、競合を削除する前に、競合を解決する必要があります???"メッセージは「
update-index --refresh
」から送信されます。これは、「git rm
」がどのパスがクリーンでどのパスがダーティであるかを確認するために内部的に呼び出されます。 「-f
」オプションなしでインデックスに関連して変更されたパス。どういうわけか、UIサーフェスに浸透したこのメッセージをスケルチしなかったのです。
「
git commit
」、「git describe
」などで使用されているのと同じメカニズムを使用して、メッセージをスケルチします。