git reset --soft和git reset之间的区别

时间:2018-10-05 22:31:31

标签: git git-reset

两者之间有什么区别

sizeof(set)

set

希望这没什么大不一样,因为我可能只是偶然地弄砸了一些东西。

1 个答案:

答案 0 :(得分:1)

git reset --soft <commit>的形式,git只会更新它所坐的“提交”,而不会触及索引或工作树。

当索引或工作树的状态准确但它基于错误的提交(或者您想要删除一个提交,因此将--soft重置为先前的提交)时,这有时会很方便。例如:

清除历史记录:

git reset --soft <first-commit-in-log>
git commit --amend 

这将产生git替换第一个提交并丢弃所有后续提交的效果,但仍具有完全相同的文件。


git reset origin/dev的形式,git将获取任何原始/开发内容(树或指向树的提交)的内容,并使用其内容更新索引。这仍然不会影响工作树,但是索引中的文件将显示为准备提交(origin/dev中的文件)。

This is useful for yanking a file out of history

git reset <commit> path/to/file
git checkout path/to/file

第一个命令从path/to/file的历史记录中提取<commit>的版本并将其放入索引。第二个命令获取索引的新内容,并覆盖工作树中该文件的内容。


git reset是一种功能非常强大的命令,具有很多可能性。建议您克隆一个仓库并使用它。