签出上一次提交后的git状态

签出上一次提交后的git状态,git,Git,我想倒回几次提交,因为我的一些同事在最近的更改中破坏了构建。所以我做了 git checkout 7bb648abd7381bee5b92c18ff215b4f8a38935ee 其中,7bb648abd7381bee5b92c18ff215b4f8a38935ee是四次提交之前的提交 然而,当我 git status 它回来了 # Not currently on any branch. nothing to commit (working directory clean) 为什么它没有

我想倒回几次提交,因为我的一些同事在最近的更改中破坏了构建。所以我做了

git checkout 7bb648abd7381bee5b92c18ff215b4f8a38935ee
其中,7bb648abd7381bee5b92c18ff215b4f8a38935ee是四次提交之前的提交

然而,当我

git status
它回来了

# Not currently on any branch.
nothing to commit (working directory clean)

为什么它没有告诉我我在同一个分支中,但只落后于四次提交?

事实上,您签出的是提交,而不是分支。如果要移动分支,应在
签出后执行以下操作:

git branch -f myBranchName #or "master" if it's the branch you're working on
它将移动分支
myBranchName
,如果它已经存在

但是,请注意:您将要更改共享的历史记录,因此请确保警告每个在此分支上工作的人


请注意,Git不会让您如此轻松地推它(以确保您知道自己在做什么):您必须
push-f

您处于分离的头部状态。看看这个答案,你可以很好地解释头部分离意味着什么


分支(和所有头)只指向一个提交。除非您执行
git签出
,否则您不会“在”分支上。每当您执行另一次
git签出时
您就不再在该分支上。

这会创建一个包含我签出的提交基线的分支
myBranchName
?您应该用您正在使用的分支替换
myBranchName
。因此,由于您将使用现有的分支名称,它将移动您的分支,而不是创建一个分支。它确实会将分支标记放在您签出的提交上。如果我只想创建一个全新的分支,并从现有分支的上一次提交中创建一个基线,怎么样?然后当您进行想要的提交时,只需执行
git branch myNewBranch
来创建它(之后,git签出myNewBranch,在这个分支上工作)太棒了。这正是我想要的。