gitステータス「Unmergedpaths:」を解決する方法は?


83

ブランチdogをにマージしましたanimal。コミットしようとすると、次のようになります。

Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution
both deleted:       ../public/images/originals/dog.ai
added by them:      ../public/images/original_files/dog.ai

ブランチごとに異なるディレクトリ名とファイル名がありました。animalブランチは、私が欲しいの変更があります。

ヘッドをリセットしようとすると動作しません。そして、他のgitアクション(削除、チェックアウトなど)を実行しようとすると、path not foundエラーが発生します。

これを解決するには、どのコマンドを実行する必要がありますか?

回答:


81

あなたがする必要があるのは:

# if the file in the right place isn't already committed:
git add <path to desired file>

# remove the "both deleted" file from the index:
git rm --cached ../public/images/originals/dog.ai

# commit the merge:
git commit

25
さらなる説明が役に立ちます
FranciscoOchoa18年

48

ファイルがすでにチェックインされていて、ファイルがマージされている(ただし、コミットされていないため、マージの競合がファイルに挿入されている)場合にこの状況に対処する別の方法は、次のコマンドを実行することです。

git reset

これによりHEADに切り替わり、gitにマージの競合を忘れるように指示し、作業ディレクトリをそのままにします。次に、問題のファイルを編集できます(「更新されたアップストリーム」通知を検索してください)。競合に対処したら、実行できます

git add -p

これにより、インデックスに追加する変更をインタラクティブに選択できます。インデックスが適切に見えるようになったら(git diff --cached)、コミットしてから

git reset --hard

作業ディレクトリ内の不要な変更をすべて破棄します。


"Updated upstream" noticesですか?
サイカット2017

2
@takias:次のような各ファイルのマーカー:<<<<<<< [branch] \n [content] \n ==== \n [content] \n [branch] >>>>>>>。これを書いたので、フォーマットは少し偶然だったと思いますが、例についてはwincent.com/wiki/Git_merge_conflict_cheatsheetを参照してください。
naught101 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.