【问题标题】:How to abort the sequence of git commits being reverted如何中止被还原的 git 提交序列
【发布时间】:2015-07-02 06:43:59
【问题描述】:

我在相当长的提交序列上开始了git revert,不知道-no-edit 选项。因此,每个被还原的提交都会弹出编辑器。退出编辑器而不保存“中止”恢复,但仅适用于被恢复的特定提交 - 因此,一旦它退出,git 就会弹出另一个编辑窗口,用于正在恢复的序列中的下一个提交。

web 上的手册页显示了一个选项 --abort,它可以满足我的要求,但我尝试使用它(在不同的窗口中),并获得使用消息:

$ git revert --abort live-20121111..V2.1-master
usage: git revert [options] <commit-ish>

我使用的是Cygwin git 1.7.5.1 版,所以大概--abort 选项是在较新的版本中引入的。我如何干净地停止整个序列以使用--no-edit 选项重新开始?我不想退出数百个编辑器会话。

【问题讨论】:

    标签: git cygwin


    【解决方案1】:

    手册revert --abortcan be replaced by a git reset --hard。这将产生停止循环的效果,尽管有错误抱怨分支的 refs/heads 不在您退出编辑器时预期的提交。

    做一个 git log(检查 git revert 已经生成了哪些提交),然后选择要重置为的提交的 SHA1。

    话虽如此,可以避免在 Cygwin 中使用 git,使用最新的(4 天前)Git for Windows2.4.5。
    PortableGit-2.4.5.1-4th-release-candidate-64-bit.7z.exe 可以提取到任何你想要的地方,并附带一个git-bash.exe 其中opens a fairly recent and complete bash

    【讨论】:

    • @sootsnoot 我的意思是,如果您使用的是 Git 2.4.5,您将可以访问 git revert--no-edit 选项。不需要 Cygwin。
    • @sootsnoot reset --hard 只是为了整体中止当前的git revert。但是要重新启动git revert,我建议使用 Git 2.5.4(适用于 Windows)
    • 哦,好的。实际上,1.7.5.1 确实有 --no-edit 选项,我只是不知道它(或者因为我以前从未做过恢复而需要它)。正如我在原始问题中所说,我只想停止为每个被还原的提交而不断弹出编辑器的循环,所以我可以从 --no-edit 重新开始。我知道我想从哪个提交开始,并且知道如何使用 reset --hard 到达那里。
    • @sootsnoot Cygwin 很好。使用 Git 的 Cygwin 不是很好(缓慢且过时)。您还拥有适用于 Windows 的 32 位版本的 Git (github.com/git-for-windows/git/releases/download/…)。使用 Git 发行版附带的 bash 并不会阻止您将 Cygwin 用于其他所有内容。我个人不使用 Cygwin:我有一个 VirtualBox(在 Xp 或 Win7 上),我在其上运行完整的 Ubuntu 或 Mint 发行版,或用于快速 Linux 容器的 boot2docker。
    猜你喜欢
    • 2021-12-26
    • 2011-07-18
    • 2016-11-01
    相关资源
    最近更新 更多