首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git还原合并VIM编辑器

Git还原合并VIM编辑器
EN

Stack Overflow用户
提问于 2018-02-14 13:12:02
回答 1查看 1.2K关注 0票数 0

我将一个分支合并到另一个分支,但现在我想恢复合并,我刚刚将其推入回购程序,因此我做了以下操作:

git revert -m 1 <log hash>

但这会打开VIM提交消息编辑器,这给我带来了问题。当VIM编辑器打开时,它会告诉我放置提交消息,所以我所做的是

  1. i键插入
  2. 像这样写了我的提交消息-> RM000: Reverting merge
  3. :x退出

但是,当我推送更改时,我会得到一个提交消息regex错误,因为我们有一个如何提交消息的约定,所以当我在第一步中输入i并在第二步中编写提交消息时,它没有正确地接受我的提交消息。

我的问题是,在没有VIM弹出的情况下,我如何才能完成提交消息?也就是说,在我使用git revert -m 1 <log hash>之后,我想做git commit -m "RM:000 Reverted",但是一旦我使用了git revert,它就会自动打开VIM编辑器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 14:38:08

好吧..。评论会话可能为用户提供了解决方案,但问题没有得到回答,对话引发了更多问题,下面是一些问题:

首先,如果您想为命令行上的还原输入提交消息,可以这样说

代码语言:javascript
复制
git revert -n -m 1 <hash>
git commit -m "RM:000 Reverted"

添加-n选项告诉revert不要自动提交。这也意味着,如果您一次还原多个提交,撤消更改将合并到索引中,因此当您手动提交时,它们都将被压缩在一起。也许这就是你想要的,也许不是;在这种情况下,它只是一次提交,所以这并不重要。

也就是说,您可能希望更多地熟悉vi编辑器,或者将git配置更改为使用更适合使用的编辑器。您可以设置core.editor配置值或环境变量GIT_EDITOR,以便在需要向您显示编辑器时为git指定要运行的命令。

最后,正如注释中所指出的,取消已被推送的合并是一件非常困难的事情;每个解决方案都有负面的后果。

您可以恢复提交,就像您正在尝试的那样。这在许多方面都是好的,但它让git认为分支已经被合并并进行了核算,即使它的更改已经取消。所以如果你以后想要的话,你必须做两件事之一:

1)您可以“还原还原”

2)您可以在合并之前在分支上执行一个rebase -f;这将导致从git不会认为“已经考虑到”的新提交重新构建分支。

您可以阅读更多关于这些技术的文章和答案。

另一个选项是使用git reset从分支历史记录中删除合并。这将导致在共享分支后重新设置分支的所有后果,因此请参阅“从上游重基中恢复”(或搜索有关强制推进的问题,因为他们中的许多人都会详细说明这一点)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48788099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档