提问人:वरुण 提问时间:7/21/2023 最后编辑:वरुण 更新时间:7/21/2023 访问量:52
尝试将子分支变基为父分支时,变基按钮被禁用
Rebase button is disabled while trying to rebase child branch with parent
问:
我有一个名为 Test-Parent 的分支。
我已经从 Test-Parent 创建了 Test-Child 分支。
我在 GitHub Desktop 中拉取了 Test-Parent 分支并创建了一个文件 TempFile.txt并推送了。
我需要使用 Test-Parent 重新定位 Test-Child 分支。
我在 GitHub Desktop 中拉取了 Test-Child 分支。
已转到 Branch-> Rebase Current Branch:
但是 Rebase 按钮被禁用,并且消息显示 This branch is up to updated with Test-Child:
当我将此分支与 Test-Parent 进行比较时,能够看到差异:
您能否帮助我如何从 GitHub Desktop 将 Test-Child 与 Test-Parent 重新定位?
答:
TL的;dr:您的分支还没有新的提交。在这种情况下,您可以简单地使用快进并入。这应该可以在 GH Desktop 中实现,并且与您希望执行的变基具有相同的效果。在上一张屏幕截图中,它提供了此选项,但选择了“创建合并提交”。我猜如果你点击箭头,你可以选择一个不同的选项,如“常规合并”或“快进合并”。Test-Parent
Test-Child
这是怎么回事?
大多数 GUI 工具都会进行基本的变基。例如,如果您已经签出,并且希望将分支重新定位到 ,则它等效于以下命令:Test-Child
Test-Parent
git rebase Test-Parent
这将对你的分支进行硬重置,然后对于你的分支上每个未打开的提交,它将逐个挑选它们。如果您的分支上没有任何新的提交,则它只执行命令的重置部分。Test-Parent
Test-Parent
在您的场景中,从概念上讲,当您的分支只是落后并且还没有自己的新提交时,实际上没有什么可以变基的,所以我不会责怪 GH Desktop 在这种情况下没有提供该选项。话虽如此,我可能更希望它仍然允许它,只是因为它是从命令行工作的方式。有些人可能会盲目地重定他们的分支,无论它是否需要它,只是出于习惯,并且在没有新提交的新分支上,他们希望它仍然更新他们的分支,即使没有任何东西被重写。
更新分支的其他方式
在您的特定情况下,如果您有一个名为 的分支,该分支是从 创建的,并且从那时起添加了一些新的提交,并且您还没有新的提交,则有多种方法可以更新您当前签出的分支,包括:Test-Child
Test-Parent
Test-Parent
Test-Child
Test-Child
- 合并:
git merge Test-Parent --ff-only
- 重置:
git reset --hard Test-Parent
- 重建:
git switch -C Test-Child Test-Parent
- 变基:
git rebase Test-Parent
- 还有其他的...
请注意,一旦您的分支上有新的提交,那么要更新您的分支,您只能使用 #4,并且对于新提交,变基选项也将在 GH Desktop 中可用。(或者,您可以使用不使用该选项的常规合并来更新分支。--ff-only
评论
gitk --all