如果我在`git checkout [commit]`的末尾没有添加一个点,会发生什么?

时间:2014-10-16 07:48:16

标签: git git-checkout

我想查看以前版本的代码。并选择使用git checkout [commit]命令将工作区回滚到目标版本。

我尝试了git checkout [commit]git checkout [commit] .。无论是否有拖尾点,工作区都可以回滚。

那么它们之间的区别是什么?

1 个答案:

答案 0 :(得分:3)

差异很简单,也是git如何思考的必要条件。

git branch
* master
git checkout [commit]
git branch
* (no branch)
git status
<no changes>

在这里,你要求git根据[commit]切换到一个未命名的分支。它就这样做了,你有一个干净的工作目录,可以为你的分支命名。 git checkout master 会带你回家。

git branch
* master
git checkout [commit] -- .
git branch
* master
git status
<lots of changes>

在这里你要求git提取[commit]的内容并将它们全部溅到你的工作目录中,所有这些都准备好你可以随意使用这些文件了。 &#39;的 git reset --hard HEAD; git clean -f -d -x &#39;会带你回家。