如何在 mergetool 期间选择整个 REMOTE 文件?
Posted
技术标签:
【中文标题】如何在 mergetool 期间选择整个 REMOTE 文件?【英文标题】:How to select the entire REMOTE file during mergetool? 【发布时间】:2019-08-21 02:33:01 【问题描述】:我正在使用 CLI 合并工具 vimdiff
,而不是逐行输入 :diffg RE
以选择远程版本,有没有一种方法可以让整个文件的远程版本作为目标合并?
【问题讨论】:
Git 允许您指定合并策略(我们的,他们的),但这些会影响整个合并。小心 【参考方案1】:(CLI 替代)
我知道它并没有真正按原样回答您的问题,但如果您需要从一侧获取合并中特定冲突文件的所有内容,您不需要甚至需要一个工具。
你可以查看你想要的文件版本(检查文档here和there)然后add
它来解决冲突:
git checkout --ours path/to/file
# or
git checkout --theirs path/to/file
# and then to conclude the resolution
git add path/to/file
请注意,如果您对该移动感到后悔,您也可以使用冲突标记将其恢复为未合并状态,使用
git checkout -m path/to/file
【讨论】:
【参考方案2】:简答:
使用:%diffget
获取所有块。
解释:
diffget
像大多数 vim 命令一样采用一个范围。引用 vimhelp:
:diffg :diffget
:[range]diffg[et] [bufspec]
Modify the current buffer to undo difference with another
buffer. [...]
See below for [range].
[...]
When no [range] is given, the diff at the cursor position or just above it is
affected. When [range] is used, Vim tries to only put or get the specified
lines.
%
用作范围时“等于 1,$(整个文件)”,请参阅 :help :%
。
【讨论】:
【参考方案3】:在 mergetool 中,如果你有超过 2 个缓冲区,则不能使用 :diffget
,因为 Vim 不知道从哪个文件中获取差异。
但是,当您解决冲突时(您需要运行 mergetool
),您有几个由 Git 创建的文件来管理冲突:
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: my/conflicting/file.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env
my/conflicting/file.py.orig
my/conflicting/file_BACKUP_5038.py
my/conflicting/file_BASE_5038.py
my/conflicting/file_LOCAL_5038.py
my/conflicting/file_REMOTE_5038.py
它们代表冲突的不同方面:
BACKUP 是带有冲突标记的文件的副本, LOCAL 是冲突前的当前状态, BASE 包含在您的本地文件和正在合并的文件(或在 rebase、cherry-pick 或 stash pop/apply 的情况下应用)之间的共同祖先提交时文件的状态, REMOTE 是尝试应用的提交所以你可以做的是将_REMOTE_
文件复制为你当前的(cp path/to/file_REMOTE_* path/to/file
),或者在mergetool中,复制_REMOTE_
(:%y
)的内容并用它替换你的文件内容(ggVGp
,到顶部,进入视线模式,到最后,粘贴)。
【讨论】:
以上是关于如何在 mergetool 期间选择整个 REMOTE 文件?的主要内容,如果未能解决你的问题,请参考以下文章
eclipse git 解决冲突 解决 mergetool 不能使用问题
如何使用 Visual Studio Code 作为 mercurial 的默认 MergeTool
markdown 如何使用`git mergetool`来解决冲突