【问题标题】:Different between git reset --soft and git reset [duplicate]git reset --soft 和 git reset 之间的区别[重复]
【发布时间】:2019-03-11 10:58:09
【问题描述】:

有什么区别

git reset --soft origin/dev

git reset origin/dev

希望这不会有太大的不同,因为我可能只是不小心搞砸了。

【问题讨论】:

  • git help resetthe online documentation of git reset 中解释了差异。简而言之,git reset <commit> 后跟git add .git reset --soft <commit> 的效果相同
  • 这是有道理的,如果您想为人类添加一个有用的简短答案,那么 git 文档并不总是那么人性化

标签: git git-reset


【解决方案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 的内容(一棵树或指向一棵树的提交),并用它的内容更新索引。这仍然不会影响工作树,但索引中的文件将显示为准备提交(origin/dev 中的文件)。

This is useful for yanking a file out of history

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

第一个命令从&lt;commit&gt; 的历史记录中挖掘path/to/file 的版本并将其放入索引中。第二个命令获取索引的新内容并覆盖该文件的工作树中的任何内容。


git reset 是一个超级强大的命令,有很多可能性。建议你克隆一个 repo 并使用它。

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 2015-02-28
    • 2014-08-25
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多