在已经存在的分支上使用git checkout -b branchname,旧分支会被覆盖吗?

6

我克隆了一个大型、维护良好的代码库。在切换到不同的分支时,我无意中使用了-b标志。Git 显示“已切换到新分支”。这是否覆盖了之前存在的分支?Git 的输出是否具有误导性或者我犯了其他错误?

1个回答

11

之前的分支被覆盖了吗?

没有。
默认分支已经被检出,并且从其HEAD创建了一个新的本地分支。

您可以使用以下命令查看所有分支:

git branch -a

只需使用以下命令,即可切换回你选择的上游分支:

git checkout -b aBranch --track origin/aBranch
# if the local branch was already there
git checkout -B aBranch --track origin/aBranch

请注意,如果您有正在进行的工作,则需要首先执行 git stash ,如“在不覆盖数据的情况下切换到 git checkout ”中所解释的那样。

谢谢,你让我更接近了。我得到了这个输出(我应该选择一个不同的分支名称吗?):git checkout -b client_release_6.12 --track remotes/origin/client_release_6.12 fatal: A branch named 'client_release_6.12' already exists. - mda
2
@mda:如果您已经有了一个本地分支client_release_6.12,那么错误消息是正常的。问题是:此分支是否从origin/client_release_6.12开始。您可以通过键入git checkout -B client_release_6.12 --track origin/client_release_6.12(注意使用-B而不是-b)来重置它。 - VonC
我按照通常的方式克隆了远程仓库,使用命令 git clone URL,然后可能创建了一个与远程分支同名的本地分支……从 Git 的输出中不太确定。 - mda
@mda 好的,但如果远程仓库有一个名为 client_release_6.12 的分支,则最好将本地 client_release_6.12 分支的起点强制设置为 origin/client_release_6.12(即上游仓库中的分支)。 - VonC
如果我上面的评论听起来正确,请编辑您的答案,我会给它打勾 :-) - mda
显示剩余2条评论

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