有什么区别" git reset --hard"和" git checkout。"?

时间:2017-07-03 08:59:56

标签: git

当我想在项目中进行一些更改并且我想返回上次提交的状态时,我可以使用这两个选项。他们实际上是做同样的事情还是他们之间有什么不同?

3 个答案:

答案 0 :(得分:3)

以下是两个命令之间的区别:

git checkout .

这告诉Git从当前分支中检出当前文件夹,并用它替换 working 文件夹。但这不会影响工作文件夹的其他区域,也不会涉及舞台。

git reset --hard

这会将整个工作目录阶段重置为当前分支的HEAD。你可以认为这是对你上一次提交以来发生的所有事情的有效控制。

一般来说硬重置是您经常不会使用的,而从各个地方检出文件/文件夹更为常见。

答案 1 :(得分:0)

如果您没有使用任何提交ID,那么它们也是相同的,即它们会将您的状态重置为最新提交。但是,如果执行reset --hard <commit_id>,则会将当前分支的HEAD更改为指定的提交ID,而checkout会创建临时分支。

git checkout 6a0ff74 
# would create a temp branch with its HEAD pointed to commit id
# you can just checkout your original branch.

git reset --head 6a0ff74
# would change the `HEAD` of the current branch. To reverse the change
# you must find the latest commit id and `reset --hard` to it again.

答案 2 :(得分:0)

git checkout从Git服务器获取更新数据,同时将更改保存在本地计算机上。

git reset --hard在特定HEAD处制作Git服务器等复制标识,并丢弃本地计算机上的所有更改。