【发布时间】:2023-03-23 03:18:01
【问题描述】:
我目前正在学习 git reset 命令。
我只是想知道,git reset HEAD 和 git reset HEAD~ 之间有什么区别。
这些命令是实现同一目标的两种方式吗?还是它们之间存在仅在某些条件下才能观察到的差异?
当我在相同情况下运行这两个命令时,它们的行为似乎相同,但为了避免what you see is all there is 陷阱,我问这个问题只是为了确定。
【问题讨论】:
-
HEAD~是HEAD的第一个父级。确保您在 repo 中至少有两个提交,您会看到更改。 -
嗨@axiac,谢谢你的评论。所以从你所说的来看,我猜
git reset HEAD和git reset HEAD~的意思是一样的,即它们都意味着:使HEAD指针指向HEAD当前指向的提交的父提交?我的理解正确吗? -
你使用的是什么版本的 Git?我刚刚检查了这两个命令,它们肯定会使 repo 处于不同的状态。
-
了解指定Git revisions的方法。
-
记住,
HEAD表示当前提交。如果有什么东西,比如git reset HEAD~,changes哪个commit是current,那么HEAD的含义也刚刚改变了。因此,无论您是使用git reset HEAD; git reset HEAD~还是使用git reset HEAD~; git reset HEAD~,这都很重要。但是如果你先做git reset HEAD~(改变HEAD)然后git reset HEAD(使用改变的HEAD但不再改变它),或者git reset HEAD(使用不变的HEAD)然后git reset HEAD~(改变HEAD),你有无论哪种方式,都只更改过一次。