"git stash apply"或"git stash pop"是否还添加了修改后的提交文件?

Kar*_*run 6 git

我在本地主分支中做了一些改动.当地的变化没有上演(补充).为了更新主分支,我做了以下事情:

  1. 统计了我当地的变化.
  2. git pull
  3. git stash适用

我看到在此之后本地更改上演(添加)?它们不应该像以前一样不受影响.

Ozn*_*256 5

git stash本质上与 相同git commit。它创建一个完全成熟的提交,但不会将其添加到历史记录中。相反,它将提交添加到存储中。

因此,git stash必须做出选择:要么提交(存储)所有未提交的更改,要么提交(存储)添加到索引的更改。它不能两者兼得。这将需要两次提交,而不是一次。

AFAIK,git stash接受所有未提交的更改。

  • 仅供参考,“git stash”实际上*确实*进行了两次提交(有时是三次!)。当 `git stash` 完成时,`refs/stash` 是一个两父或三父提交。“主”提交“refs/stash”本身包含工作树状态,“refs/stash^2”包含保存的索引状态。第三次提交“refs/stash^3”仅在您使用“-u”或“-a”时才存在,并且包含未跟踪的文件(使用“-a”则被忽略)。(并且 `git rev-parse refs/stash^` == `git rev-parse HEAD`。) (2认同)