尝试将子分支变基为父分支时,变基按钮被禁用

Rebase button is disabled while trying to rebase child branch with parent

提问人:वरुण 提问时间:7/21/2023 最后编辑:वरुण 更新时间:7/21/2023 访问量:52

问:

我有一个名为 Test-Parent 的分支。

我已经从 Test-Parent 创建了 Test-Child 分支。

我在 GitHub Desktop 中拉取了 Test-Parent 分支并创建了一个文件 TempFile.txt并推送了。

我需要使用 Test-Parent 重新定位 Test-Child 分支

我在 GitHub Desktop 中拉取了 Test-Child 分支。

已转到 Branch-> Rebase Current Branch:

enter image description here

但是 Rebase 按钮被禁用,并且消息显示 This branch is up to updated with Test-Child:

enter image description here

当我将此分支与 Test-Parent 进行比较时,能够看到差异:

enter image description here

您能否帮助我如何从 GitHub Desktop 将 Test-ChildTest-Parent 重新定位?

git 变基 github-desktop

评论

0赞 Kim 7/21/2023
您是否尝试过从命令行进行变基?
0赞 वरुण 7/21/2023
从命令行 Ivam 能够变基。小屋,我们如何从 GitHub Desktop 做同样的事情?
0赞 Kim 7/21/2023
我唯一的其他建议是确保您的父分支与您的源/父分支保持同步。在 bash 中,run 查看整个历史记录和本地/远程分支位置。gitk --all

答:

1赞 TTT 7/21/2023 #1

TL的;dr:您的分支还没有新的提交。在这种情况下,您可以简单地使用快进并入。这应该可以在 GH Desktop 中实现,并且与您希望执行的变基具有相同的效果。在上一张屏幕截图中,它提供了此选项,但选择了“创建合并提交”。我猜如果你点击箭头,你可以选择一个不同的选项,如“常规合并”或“快进合并”。Test-ParentTest-Child

这是怎么回事?

大多数 GUI 工具都会进行基本的变基。例如,如果您已经签出,并且希望将分支重新定位到 ,则它等效于以下命令:Test-ChildTest-Parent

git rebase Test-Parent

这将对你的分支进行硬重置,然后对于你的分支上每个未打开的提交,它将逐个挑选它们。如果您的分支上没有任何新的提交,则它只执行命令的重置部分。Test-ParentTest-Parent

在您的场景中,从概念上讲,当您的分支只是落后并且还没有自己的提交时,实际上没有什么可以变基的,所以我不会责怪 GH Desktop 在这种情况下没有提供该选项。话虽如此,我可能更希望它仍然允许它,只是因为它是从命令行工作的方式。有些人可能会盲目地重定他们的分支,无论它是否需要它,只是出于习惯,并且在没有新提交的新分支上,他们希望它仍然更新他们的分支,即使没有任何东西被重写。

更新分支的其他方式

在您的特定情况下,如果您有一个名为 的分支,该分支是从 创建的,并且从那时起添加了一些新的提交,并且您还没有新的提交,则有多种方法可以更新您当前签出的分支,包括:Test-ChildTest-ParentTest-ParentTest-ChildTest-Child

  1. 合并:git merge Test-Parent --ff-only
  2. 重置:git reset --hard Test-Parent
  3. 重建:git switch -C Test-Child Test-Parent
  4. 变基:git rebase Test-Parent
  5. 还有其他的...

请注意,一旦您的分支上有新的提交,那么要更新您的分支,您只能使用 #4,并且对于新提交,变基选项也将在 GH Desktop 中可用。(或者,您可以使用不使用该选项的常规合并来更新分支。--ff-only