の後にリベース中ですgit pull --rebase
。マージ競合のあるファイルがいくつかあります。特定のファイルに対して「彼ら」の変更または「自分」の変更を受け入れるにはどうすればよいですか?
$ git status
# Not currently on any branch.
# You are currently rebasing.
# (fix conflicts and then run "git rebase --continue")
# (use "git rebase --skip" to skip this patch)
# (use "git rebase --abort" to check out the original branch)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: CorrectlyMergedFile
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add <file>..." to mark resolution)
#
# both modified: FileWhereIWantToAcceptTheirChanges
# both modified: FileWhereIWantToAcceptMyChanges
通常、私はファイルまたはマージ ツールを開いて、すべての「彼ら」または「私」の変更を手動で受け入れます。ただし、便利な git コマンドが不足しているのではないかと思います。
また、どのファイルが競合に遭遇したか、また競合の内容が何であるかを確認した場合にのみ、各ファイルのマージ戦略を選択できることに注意してください。
ベストアンサー1
競合ファイルごとに、以下を指定できます。
git checkout --ours -- <paths>
# or
git checkout --theirs -- <paths>
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <paths>...
--ours
--theirs
インデックスからパスをチェックアウトするときは、マージされていないパスのステージ #2 (ours
) または #3 ( ) をチェックアウトします。theirs
前回のマージ失敗により、インデックスにはマージされていないエントリが含まれている場合があります。デフォルトでは、インデックスからそのようなエントリをチェックアウトしようとすると、チェックアウト操作は失敗し、何もチェックアウトされません。 を使用すると、これらのマージされていないエントリは無視されます。または
-f
を使用して、マージの特定の側からのコンテンツをインデックスからチェックアウトできます。を使用すると、作業ツリー ファイルに加えられた変更を破棄して、元の競合したマージ結果を再作成できます。--ours
--theirs
-m