我有一个
branch2
从另一个 branch1
分支,没有额外的提交 branch1
所以分支树实际上是线性的。
现在我发现
branch1
中的最后一次提交实际上应该是branch2
中的第一次提交。
所以我认为它会保存到命令git reset --hard HEAD~
。
在文档中,我们发现之后的提交丢失了,
但我认为因为我们有 branch2
,所以在给定的场景中这是不正确的。
当然,我想得到社区的意见。
你是对的,没有什么损失。要理解原因,有必要了解一下 git 的工作原理:
abc123
is on branch1
”实际上意味着“如果您从 branch1
引用的提交开始,并向后跟随“parent”指针,您将在某个时刻到达提交 abc123
”。git reset --hard
所做的(以及丢弃未提交的更改,这是永久的)是更改命名引用以指向不同的提交。
警告是,这可能会使先前的提交“无法访问”——也就是说,不在任何命名分支或标签的历史记录中。无法访问的提交会定期被“垃圾收集”,并从数据库中删除。在那之前,如果您知道它们的哈希值,或者在类似
git reflog
的地方找到它,仍然可以访问它们
在您的情况下,从
branch1
可以访问的所有提交也可以从 branch2
访问,因此不会有任何内容变得无法访问。你正在改变这样的历史:
a <- b <- c <- d <- e <- f
^ ^
branch1 branch2
对于这样的人:
a <- b <- c <- d <- e <- f
^ ^
branch1 branch2