这就是为什么在git中使用匿名分支(即所谓的丢失提交)时要更加努力的原因吗?

这就是为什么在git中使用匿名分支(即所谓的丢失提交)时要更加努力的原因吗?,git,dvcs,Git,Dvcs,我阅读了与git比较匿名分支的地方,如图所示: 因此,我可以切换到中间项目状态(通过git reset--hard 6aa32cfecf4或其他方式)并提交更改序列而无需命名分支吗 hg头显示了所有头,包括匿名分支。这是否可能从CLI使用git查找这些匿名分支的所有头?您确实可以切换到中间项目状态,尽管您希望使用git checkout 6aa32cf而不是git reset--hardgit reset将头分支移动到该状态,这不是您想要的。git将警告您处于“分离头”状态,这意味着它不知道在您

我阅读了与git比较匿名分支的地方,如图所示:

因此,我可以切换到中间项目状态(通过
git reset--hard 6aa32cfecf4
或其他方式)并提交更改序列而无需命名分支吗


hg头
显示了所有头,包括匿名分支。这是否可能从CLI使用git查找这些匿名分支的所有头?

您确实可以切换到中间项目状态,尽管您希望使用
git checkout 6aa32cf
而不是
git reset--hard
git reset
将头分支移动到该状态,这不是您想要的。git将警告您处于“分离头”状态,这意味着它不知道在您提交时要推进哪个分支。不过,你当然可以继续工作并做出承诺

如果您确实进行了提交,然后签出另一个分支而没有命名您所在的分支,git将警告您:

ash@autumn ~/code/peril ((9fae92d...)) $ git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  9fae92d Commit to find later.

If you want to keep them by creating a new branch, this may be a good time
to do so with:

 git branch new_branch_name 9fae92d5d5698096f0c1ddc11773ffded1194af2

Switched to branch 'master'
即使您没有按照它的说明进行操作,如果您还记得要查找的提交消息,您仍然可以稍后使用
git reflog show HEAD
grep
找到提交:

35f4222 HEAD@{0}: checkout: moving from 9fae92d5d5698096f0c1ddc11773ffded1194af2 to master
9fae92d HEAD@{1}: commit: Commit to find later.
0d4b27b HEAD@{2}: checkout: moving from master to 0d4b27b379

或者,更晚些时候,使用and。

我不理解你主要问题的语法

但我想补充一点:

  • “丢失的”git分支可能在30天后(默认值)而不是之前被垃圾收集

谢谢您的解释。似乎
git
没有兴趣在分支头丢失名称时跟踪它们+1在hg拥有书签之前,您确实需要
hg heads
才能找到它们。Git的理念是,如果你想再次找到它,你应该给它起个名字:分支名称便宜而且是非永久性的(Mercurial的仍然便宜,但稍微便宜一点,而且非常永久)。git方法的好处是,这些未命名的分支最终将被自动清除;git方法的缺点是这些未命名的分支最终会被自动清除?
35f4222 HEAD@{0}: checkout: moving from 9fae92d5d5698096f0c1ddc11773ffded1194af2 to master
9fae92d HEAD@{1}: commit: Commit to find later.
0d4b27b HEAD@{2}: checkout: moving from master to 0d4b27b379