如何使用 git gui 进行变基?

Posted

技术标签:

【中文标题】如何使用 git gui 进行变基?【英文标题】:How to do a rebase with git gui? 【发布时间】:2011-06-17 08:26:02 【问题描述】:

我知道如何从命令行做一个 git rebase,但是你如何用官方的git-gui 来做呢?

【问题讨论】:

【参考方案1】:

将此添加到主目录中的 .gitconfig 文件中,以将变基命令添加到工具菜单:

[guitool "Rebase onto..."]
    cmd = git rebase $REVISION
    revprompt = yes
[guitool "Rebase/Continue"]
    cmd = git rebase --continue
[guitool "Rebase/Skip"]
    cmd = git rebase --skip
[guitool "Rebase/Abort"]
    cmd = git rebase --abort
[guitool "Pull with Rebase"]
    cmd = git pull --rebase

【讨论】:

到 cmd 行(第 2 行),需要添加 $REVISION,即 cmd = git rebase $REVISION。否则,谢谢!我不知道这种能力存在。 交互式变基也是可能的,您只需将 env-var EDITOR 设置为 gui 编辑器。我认为添加到您的答案中的编辑过多,因此我创建了自己的答案-随时将我的答案添加到您的答案中。 出现了一些窗口,但是在这些字段中输入什么? 我发现 Jim Raden 的评论是正确的,需要 $REVISION 而不是 $VERSION。也许 Ted Percival 可以编辑他的答案?我会这样做,但我不确定 $REVISION 是否普遍正确,或特定于平台或其他什么。【参考方案2】:

git-gui:

    转到Tools -> Add,然后输入自定义命令,即git rebase master。 选择全局添加 使该选项出现在所有存储库中。 (它会为您将配置写入您的~/.gitconfig,正如his answer 中提到的@Ted-Percival)。

【讨论】:

值得指出的是,您的本地 Git 数据库必须与您希望变基的分支的更改保持同步。如果本地 master 在您分支后没有更新,git rebase master 什么也不做!要解决此问题,请首先从命令行运行 git checkout master; git pull; git checkout MY_BRANCH,或将 git-gui 命令更改为 git rebase origin\master【参考方案3】:

您可以使用git gui 进行完整的交互式变基,包括提交选择、改写和冲突解决!除了 Ted Percival 的回答,将此添加到您的 ~/.gitconfig

[guitool "Rebase interactive"]
    cmd = EDITOR=gvim git rebase -i $REVISION
    revprompt = yes

必须使用图形编辑器 - 普通的旧 vim 不起作用,但 gvim 可以。您可以使用任何 gui 编辑器,例如我使用 nedit。该编辑器的单独窗口会在您需要输入任何内容时弹出:最初选择提交、重新编写提交消息(无论是重新编写还是压缩提交)等。

【讨论】:

【参考方案4】:

git gui 可用于在执行rebase --interactive 时将文件添加到索引(如git rebase man page、GitHub rebase help page 或此git rebase interactive tip article 中提到的),但不能执行rebase本身。 (除非如您所见,您在工具部分自己定义命令)

【讨论】:

以上是关于如何使用 git gui 进行变基?的主要内容,如果未能解决你的问题,请参考以下文章

使用 git 和 meld 进行交互式变基的 3 路合并中的三个文件是啥?

如何修复“损坏的”交互式变基?

Git之变基方式Rebase的使用

如何在git gui中使用标签进行版本控制

git rebase——分支变基及变基的风险

如何通过 Bitbucket 中的拉取请求变基