git - git reset 命令之间的区别

标签 git

当我想将最后一次提交返回到暂存区时,我一直在使用 git reset --soft HEAD^git reset --soft HEAD~1。我一直在互换使用它们,但想知道是否存在任何细微差别?如果没有,你能解释一下语法上的区别吗? ^ 只是 ~1 的别名吗?

最佳答案

HEAD^HEAD~1 指的是同一个提交。

^ 指的是提交的第一个父级。 ~n 指的是第 n 个祖先。所以 ^^(parent-of-parent)等同于 ~2

我能想到的主要微妙之处在于当前提交是否有多个父项(即它是一个 merge 提交)。在这种情况下,HEAD^HEAD^2 都是有效的并且引用不同的提交。 HEAD~1 指的是 HEAD^ 而不是 HEAD^2

gitrevisions man page有很多细节和例子。

关于git - git reset 命令之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097472/

相关文章:

仅在特定分支上的 GitLab CI 管道

git - 为什么 "git status"不显示分支中未推送的提交?

git - 通过 IntelliJ 向 git 添加新文件

git - 从 Git 存储库中删除用户名

git clean 在切换分支时不会删除添加到分支的子模块

git - 如何直接从 Atom 编辑器初始化 GitHub 存储库?

git - push branch 和 merge to master 然后 push 有什么区别?

git - 如何在没有本地仓库的情况下远程运行 git 命令

git - Jenkins 管道 ssh 代理 git push 失败

linux - Git fatal error : cannot simplify commit