如何在 vimdiff 之后保存文件并停止启动下一个文件?
How to save the file after vimdiff and stop launching the next file?
我目前正在从 test 分支 合并到 master 分支。我使用下面的命令来查看差异。
git difftool master_banch test_branch
我将 difftool 的默认值设置为 vimdiff。我想知道在我们编辑更改并停止启动下一个文件后我们将如何保存文件?我在master和test分支之间有1000多个文件要编辑,所以如果我想保存它并在第二天继续工作,我将如何停止并保存它?
我尝试编辑文件并在 vim 上使用 :wq 保存,所以在我编辑第一个文件后,它会自动转到第二个文件。当我使用 Ctrl+C 停止时,所有更改都消失了。
git difftool
命令通常不用于编辑 文件。有关 git difftool
的设计方式的更多信息,请参阅 my answer to How difftool can show branch changes but avoiding merges?。
在 Git(或任何地方)进行非常大的合并可能很困难。此问题的通常解决方案是避免进行大型合并。 Git 的设计鼓励频繁的小提交,这可以与频繁的小合并合并,通常 far 更容易,更不容易出错。但这是将来要解决的问题;你现在有一个很大的合并问题,你必须处理它。
处理方法是不使用git difftool
。完全不要 运行 git difftool
。如果您想访问 所有 两个感兴趣的分支中的文件,请考虑使用 git worktree add
来代替。 (警告:如果可能,请确保你有 Git 2.15 或更高版本;git worktree
是 Git 2.5 中的新内容,其中有一些令人讨厌的惊喜,最终在 2.15 中得到修复。对于只是 查看 文件,不过 Git 2.5 中的实现很好。)
要执行合并,请选择一些工作树——例如主树,而不是用 git worktree add
添加的树——然后开始合并。继续它直到它完成。在使用它进行合并时,请勿尝试将此工作树用于任何其他目的。
如果您没有 git worktree
,请注意,您可以对存储库进行多个克隆。使用一个克隆来进行合并;使用其他克隆来查看来自特定提交的文件,包括您正在合并的分支提示。
要回答字面问题,您可以使用
git difftool --trust-exit-code ...
(或等效的 .gitconfig
设置)允许 difftool 中止并且在 difftool(即 vim)return 出现错误退出代码时不继续处理其他文件。您可以使用 :cquit
(:cq
) 使 vim
return 成为错误退出代码。除非您事先保存(使用 :w
或 :up
),否则更改将会丢失。
我目前正在从 test 分支 合并到 master 分支。我使用下面的命令来查看差异。
git difftool master_banch test_branch
我将 difftool 的默认值设置为 vimdiff。我想知道在我们编辑更改并停止启动下一个文件后我们将如何保存文件?我在master和test分支之间有1000多个文件要编辑,所以如果我想保存它并在第二天继续工作,我将如何停止并保存它?
我尝试编辑文件并在 vim 上使用 :wq 保存,所以在我编辑第一个文件后,它会自动转到第二个文件。当我使用 Ctrl+C 停止时,所有更改都消失了。
git difftool
命令通常不用于编辑 文件。有关 git difftool
的设计方式的更多信息,请参阅 my answer to How difftool can show branch changes but avoiding merges?。
在 Git(或任何地方)进行非常大的合并可能很困难。此问题的通常解决方案是避免进行大型合并。 Git 的设计鼓励频繁的小提交,这可以与频繁的小合并合并,通常 far 更容易,更不容易出错。但这是将来要解决的问题;你现在有一个很大的合并问题,你必须处理它。
处理方法是不使用git difftool
。完全不要 运行 git difftool
。如果您想访问 所有 两个感兴趣的分支中的文件,请考虑使用 git worktree add
来代替。 (警告:如果可能,请确保你有 Git 2.15 或更高版本;git worktree
是 Git 2.5 中的新内容,其中有一些令人讨厌的惊喜,最终在 2.15 中得到修复。对于只是 查看 文件,不过 Git 2.5 中的实现很好。)
要执行合并,请选择一些工作树——例如主树,而不是用 git worktree add
添加的树——然后开始合并。继续它直到它完成。在使用它进行合并时,请勿尝试将此工作树用于任何其他目的。
如果您没有 git worktree
,请注意,您可以对存储库进行多个克隆。使用一个克隆来进行合并;使用其他克隆来查看来自特定提交的文件,包括您正在合并的分支提示。
要回答字面问题,您可以使用
git difftool --trust-exit-code ...
(或等效的 .gitconfig
设置)允许 difftool 中止并且在 difftool(即 vim)return 出现错误退出代码时不继续处理其他文件。您可以使用 :cquit
(:cq
) 使 vim
return 成为错误退出代码。除非您事先保存(使用 :w
或 :up
),否则更改将会丢失。