git reset --soft 和 git reset 之间的区别
Different between git reset --soft and git reset
有什么区别
git reset --soft origin/dev
和
git reset origin/dev
希望这不是很大的区别,因为我可能只是不小心搞砸了。
在形式 git reset --soft <commit>
中,git 只会更新它所在的 "commit",而不会触及索引或工作树.
当您的索引或工作树的状态准确但它基于错误的提交时(或者您想要删除提交,因此您将 --soft 重置为之前的提交),这偶尔会很方便。例如:
清除历史:
git reset --soft <first-commit-in-log>
git commit --amend
这将产生 git 替换第一个提交并丢弃所有后续提交的效果,但仍然具有完全相同的文件。
在形式 git reset origin/dev
中,git将获取任何origin/dev的内容(树或指向树的提交), 并用它的内容更新索引。这仍然不会影响工作树,但索引中的文件将显示为准备提交(origin/dev
中的文件)。
This is useful for yanking a file out of history
git reset <commit> path/to/file
git checkout path/to/file
第一个命令从 <commit>
的历史中挖掘 path/to/file
的版本并将其放入索引中。第二个命令获取索引的新内容并覆盖该文件的工作树中的任何内容。
git reset
是一个超级强大的命令,有很多可能性。建议您克隆一个存储库并使用它。
有什么区别
git reset --soft origin/dev
和
git reset origin/dev
希望这不是很大的区别,因为我可能只是不小心搞砸了。
在形式 git reset --soft <commit>
中,git 只会更新它所在的 "commit",而不会触及索引或工作树.
当您的索引或工作树的状态准确但它基于错误的提交时(或者您想要删除提交,因此您将 --soft 重置为之前的提交),这偶尔会很方便。例如:
清除历史:
git reset --soft <first-commit-in-log>
git commit --amend
这将产生 git 替换第一个提交并丢弃所有后续提交的效果,但仍然具有完全相同的文件。
在形式 git reset origin/dev
中,git将获取任何origin/dev的内容(树或指向树的提交), 并用它的内容更新索引。这仍然不会影响工作树,但索引中的文件将显示为准备提交(origin/dev
中的文件)。
This is useful for yanking a file out of history
git reset <commit> path/to/file
git checkout path/to/file
第一个命令从 <commit>
的历史中挖掘 path/to/file
的版本并将其放入索引中。第二个命令获取索引的新内容并覆盖该文件的工作树中的任何内容。
git reset
是一个超级强大的命令,有很多可能性。建议您克隆一个存储库并使用它。