Sourcetree 中检出现有分支和检出新分支之间的区别

Difference between checkout existing and checkout new branch in Sourcetree

在 sourcetree 中,我只想查看远程开发分支,这样我就可以在其中启动一个新的功能分支。我目前在另一个功能分支中,我已在其中提交并推送了所有更改。

然而,当我右键单击远程分支时 origin/develop 我得到了这个:

出于某种原因,我找不到这里有什么区别。我不想在我的新工作中破坏回购协议,所以我非常小心。在 GitKraken 中,您只需检出远程并在必要时更新本地开发分支。

我不太了解 GitKraken 或 Sourcetree,但通常您不会想直接在 Git 中签出远程跟踪分支。也就是说,一般情况下您不会希望这样做:

git checkout origin/develop

原因是跟踪分支,顾名思义,主要是为了跟踪真实远程分支的状态而存在的。但是你所有的本地工作都应该进入某个地方的新本地分支。

因此,回到您的 Sourcetree 问题和屏幕截图,我看不出有什么奇怪的地方。您是说要基于跟踪分支 origin/develop 创建一个新的本地分支 develop。此外,您告诉 Sourcetree/Git 您希望此本地分支跟踪远程跟踪分支 origin/develop

我不太熟悉 sourcetree 但通常你可以通过结帐创建一个新分支(如果你在命令 window 的命令中添加 -b)所以我假设结帐新分支就是这样做的,而另一个让你检查现有的分支

它的作用是:

git checkout -b develop --track origin/develop

这将确保本地分支 develop 默认情况下推送到远程分支 origin/develop

请注意,对于 Git 2.23+,那将是 git switch

git switch -c develop --track origin/develop

SourceTree 尚未集成该新命令。


I don't want to break the repo at my new job, so I'm super careful

这不会破坏任何东西:这只是一个本地操作。


这与“Checkout existing”不同,后者只会列出现有的本地或远程分支,相当于:

git switch <branch>