Git 恢复、 checkout 和重置傻瓜式教程

标签 git git-checkout git-reset git-revert

抱歉,这三个 git 命令正在考验我的智力。

是否可以为所有新手建立一个群组 wiki 来涵盖这三个 git 命令?我想要学习的是如何将文件和项目恢复或回滚到之前的状态。

由于我没有使用 Subversion 或其他集中式版本控制软件的经验,因此没有必要引用它们的不同做法,而且常常会造成困惑。

谢谢。

最佳答案

您提到的所有资源都很受欢迎,但我很惊讶您没有发现它们有帮助。每个命令的手册页可能是最具描述性的资源,但无可否认是枯燥和密集的。下面简单总结一下这三个命令的区别:

  • git revert 采用树状结构并创建一个新的提交,撤消给定提交中所做的更改

  • git checkout 就是这样做的: checkout 一个树状结构。如果您传递分支名称,您将移动到该分支的 HEAD ,如果您传递非 HEAD 提交或标记,您将输入“分离” HEAD”状态。无论如何,您的工作树现在将与提交时相同(这里存在一些未跟踪/新文件的边缘情况)。

  • git reset 采用树状结构,并删除直到(但不包括)给定提交的所有提交,但不更改任何文件的当前状态。也就是说,提交消失了,但您的工作树仍处于相同状态。传递 --hard 也会将文件恢复到状态。

(是,a treeish is a real thing)

关于Git 恢复、 checkout 和重置傻瓜式教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191444/

相关文章:

git - 获取远程日志,而不是提交

git - 如何从现有的远程分支创建本地分支?

git - 从公共(public)存储库创建一个私有(private)分支,其中 base/trunk 是上游标签

git - 为什么在提交和 checkout 后文件夹留在我的本地 git 工作目录中

git - 从旧的 SVN 存储库中 check out 对应于某个修订版的 git 提交?

git 撤消所有未提交或未保存的更改

git - 为什么我的 git 不能通过 gitolite 使用 git-daemon 推送到我的服务器

git - 被推送后恢复 merge

git - 为什么 git reset 不起作用?

Git 重置(不难)然后快进 merge 某些提交