好的,所以我在我的项目中做了一些改变,导致了一个巨大的混乱.我已经提交了更改,所以我可以稍后再回到它,然后使用git checkout HEAD ^来检查先前的提交.现在我正在对我的项目进行提交,它将命令行上的SHA-1显示为工作分支(而不是master)
我不知道有关git的所有信息,但我猜HEAD仍然指着我的破碎副本,因为我正在切断并解决了问题.我怎样才能将HEAD指向我正在进行的最新提交?
我猜它与rebase有关,但我不是百分百肯定.
谢谢.
Chr*_*sen 23
现在我正在对我的项目进行提交,它将命令行上的SHA-1显示为工作分支(而不是master)
这可能意味着你有一个"独立的HEAD".分离的HEAD直接指向提交而不是指向分支(然后指向提交).一个独立的头像一个未命名的分支.
此状态是由您的git checkout HEAD^
命令HEAD^
引用提交而不是分支名称引起的.您可能想要这样做git reset --hard HEAD^
- 虽然master仍然是活动分支 - 从master中删除最近的提交(它仍然存在于磁盘上并且可以通过reflog访问,直到它在reflog中的条目到期为止).
我怎样才能将HEAD指向我正在进行的最新提交?
HEAD
总是你工作的提交,无论是否分离.
如果你的意思是"我怎样才能将master指向我正在使用的最新提交?",那就像询问"我怎样才能让主人指向HEAD
?"一样.答案是
git branch -f master HEAD
Run Code Online (Sandbox Code Playgroud)
(实际上,你可以放弃HEAD
,因为它是默认的).这会强制将master重置为当前的提交HEAD
.在所有提交主是通过另一个分支或当前不可达HEAD
今后将只能通过引用日志访问,并最终将垃圾收集(该扔掉,从主,什么都在主人不在HEAD
).您可能还希望在HEAD
此之后重新连接到此更新的主服务器.
git checkout master
Run Code Online (Sandbox Code Playgroud)
您可以HEAD
先重新挂接,然后使用以下两个连续命令重置master,而不是上面的两个命令:
git checkout master # reattach, commit at HEAD is now the unwanted commit
git reset --hard HEAD@{1} # reset master to the commit at HEAD before the prior command
Run Code Online (Sandbox Code Playgroud)
该HEAD@{1}
表示法用于访问reflog中的条目.此示例仅表示"之前的HEAD
"(即" HEAD
受影响的最近操作之前的提交HEAD
").
归档时间: |
|
查看次数: |
3567 次 |
最近记录: |