gpt4 book ai didi

git - 如何撤消部分 git 存储?

转载 作者:行者123 更新时间:2023-12-05 01:47:47 26 4
gpt4 key购买 nike

我有一个肮脏的工作目录,并使用 git stash save -p 有选择地存储了一些更改。我的意图是将过去的大提交分成两个较小的提交。现在的问题是我不小心藏错了thunk,所以我想再做一次。我尝试按照 this question 中的建议执行 git stash pop但是这样做会给我这个错误:

error: Your local changes to the following files would be overwritten by merge:
my_file.js
Please, commit your changes or stash them before you can merge.
Aborting

最佳答案

对我来说,以下就足够了:

% git add myfile.js
% git stash pop
% git reset myfile.js

或者,提交 myfile.js,然后 pop 存储,解决任何冲突。要摆脱虚拟提交,git reset --soft HEAD^。像这样的东西:

% git add myfile.js
% git commit
% git stash pop
# resolve conflicts if needed
% git reset --soft HEAD^

--soft 表示不要触及工作树或索引; HEAD^ 表示最后一个之前的提交。

手册实际上提到了这种行为,虽然我直到现在才注意到它:

pop [--index] [-q|--quiet] [<stash>]

Remove a single stashed state from the stash list and apply it on top of the current working tree state, i.e., do the inverse operation of git stash save. The working directory must match the index.

(强调我的) 当我们执行 git add 时,我们使索引和工作目录匹配(它们都包含未 stash 的更改) .同样,当我们创建一个提交时,它们是匹配的。 (它们都没有变化)

关于git - 如何撤消部分 git 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com