Visual Studio Code 中的 Git rebase

41

这是我的情况:我有一个生产分支,一个开发分支和用于功能的分支。当我在开发一个功能时,我不得不在dev分支上进行热修复。现在,为了避免未来的合并冲突,我需要将我当前正在工作的feature分支rebase。在使用JetBrain IDE之前,我会执行git rebase以完成操作。在VSCode中找到的唯一命令是Git: Sync(rebase),但这没有做任何事情也没有rebase。我只得到这个消息:

This action will push and pull commit to and from 'origin/Current_feature'

有人对此有经验吗?


1
听起来,“Git: Sync (rebase)”执行git pull --rebase,作为“Git:Sync”的补充。而“Git:Sync”可能只会执行普通的git pullgit pull --rebase将新提交的内容变基到分支上,而不是将其合并。 - Rory O'Kane
7个回答

25

我刚刚尝试了一下,它有效!输入图片描述

附注:我试图找到使用--rebase参数设置默认的“同步”操作的方法。我找到了添加了配置选项以从状态栏同步+变基的PR,但它还没有完成。

最终找到解决方案:git config --global pull.rebase true,它有效!


6
自 2018 年 9 月版本以来,您现在可以进行 Sync+Rebase 操作了。https://code.visualstudio.com/updates/v1_28#_always-rebase-when-running-sync - gianlucaparadise
3
这个git pull --rebase的封装提供了一种在拉取时变基(即获取并在远程分支上进行变基)的方式,但不能将HEAD变基到任意提交。 - Rory O'Kane
7
这只是将您本地提交的修改与同一分支中新拉取的提交进行变基。它不允许在另一个分支上进行变基(例如 git rebase origin/master),这可能是提问者所询问的内容。我仍然不确定 vscode 是否有一种非终端的方法来在另一个分支上进行变基。 - Martijn Heemels

22
我认为Visual Studio Code没有内置Git rebase功能。如果你想在Visual Studio Code中使用git命令行工具或Git GUI进行rebase操作,那么你可以安装VS Code的GitLens扩展程序。 GitLens的README表明它支持rebase。当查看分支时,每个分支的上下文菜单包括以下命令:
  • Rebase (Interactive) Branch (via Terminal)
  • Rebase (Interactive) Branch to Remote (via Terminal)
当查看一个分支的提交时,每个提交的上下文菜单包括以下命令:
  • Rebase to Commit (via Terminal) (如果可用)

18

您可以直接在终端中运行以下命令:

git rebase branch 或者 git rebase -i branch

您需要配置您的gitconfig,以便在交互式rebase时使用vscode。

类似于:

[core]
  editor = code --wait

或者通过将您的环境变量设置为 GIT_EDITOR=code\ --wait

一旦您想要做一些不太寻常的事情,使用命令行会产生更好的结果。


2
这解决了我的问题!我之前只有"edit=code",当执行 git rebase -i origin/master 命令时,VSCode 自动执行了重建。 - Juan José Ramírez

9

7

1
这是正确的答案!从你的特性分支开始:按 F1 -> Git:Rebase branch... -> 选择 develop 分支(主干)。完成。 - Nomnom

3

您可以设置git配置,以便像这样自动打开VSCode进行变基:

git config --global core.editor code

那么您可以使用以下命令进行简单的变基操作:

git rebase -i name-of-branch

在此输入图片描述

注意1:为了获得像屏幕截图中显示的漂亮格式,您需要安装GitLens

注意2:如果您正在使用VSCodium,您应该配置git以使用它:

git config --global core.editor codium

1
看起来在最近的VSCode版本中,您可以这样进行Pull+Rebase操作:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接