Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何撤消部分git存储?_Git_Git Stash - Fatal编程技术网

如何撤消部分git存储?

如何撤消部分git存储?,git,git-stash,Git,Git Stash,我有一个脏的工作目录,并使用git stash save-p有选择地隐藏一些更改。我的意图是将以前的大提交拆分为两个较小的提交。现在的问题是我不小心藏错了重击,所以我想再做一次。我尝试按照中的建议执行git stash pop,但这样做会导致以下错误: 错误:您对以下文件的本地更改将被合并覆盖: my_file.js 请在合并之前提交或隐藏更改。 流产 对我来说,以下几点就足够了: % git add myfile.js % git stash pop % git reset myfile.js

我有一个脏的工作目录,并使用
git stash save-p
有选择地隐藏一些更改。我的意图是将以前的大提交拆分为两个较小的提交。现在的问题是我不小心藏错了重击,所以我想再做一次。我尝试按照中的建议执行
git stash pop
,但这样做会导致以下错误:

错误:您对以下文件的本地更改将被合并覆盖:
my_file.js
请在合并之前提交或隐藏更改。
流产

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

% git add myfile.js
% git stash pop
% git reset myfile.js
或者,提交myfile.js,然后弹出隐藏,解决任何冲突。为了摆脱伪提交,
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][]
从隐藏列表中删除单个隐藏状态,并将其应用于当前工作树状态的顶部,即执行
git stash save
的反向操作工作目录必须与索引匹配。


(emphasis mine)当我们执行
git add
时,我们会使索引和工作目录匹配(它们都包含未隐藏的更改)。类似地,当我们创建提交时,它们匹配。(它们都不包含任何更改)

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

% git add myfile.js
% git stash pop
% git reset myfile.js
或者,提交myfile.js,然后弹出隐藏,解决任何冲突。为了摆脱伪提交,
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][]
从隐藏列表中删除单个隐藏状态,并将其应用于当前工作树状态的顶部,即执行
git stash save
的反向操作工作目录必须与索引匹配。

(emphasis mine)当我们执行
git add
时,我们会使索引和工作目录匹配(它们都包含未隐藏的更改)。类似地,当我们创建提交时,它们匹配。(它们都不包含更改)