何月道:
$ git stash --keep-index $ git stash pop
Git让我解决冲突。我做错了什么吗?我如何隐藏未暂存的文件(测试程序),然后返回所有的文件(这样我就可以保留所有未暂存的文件,而未暂存的文件又回来了,并且是未暂存的)?
noj0wjuj1#
问题来自--keep-index。您隐藏的更改与您已经暂存的更改冲突。以下是您可以用来重现
--keep-index
echo bar > foo git add foo echo baz > foo git stash --keep-index git stash pop #CONFLICT
在这种情况下,git不知道bar或baz是否应该出现在foo中。解决方案是不使用--keep-index参数或提交您首先添加的更改(您始终可以在以后修改您的提交)您也可以让您的工作目录处于使用git stash branch <branchname>之前的状态(然后您必须合并分支)
git stash branch <branchname>
bnl4lu3b2#
git stash保存从HEAD状态到工作树状态的转换。它还将工作树设置为 HEAD 状态。git stash --keep-index保存从HEAD状态到工作树状态的转换。它还将工作树设置为 index 状态。git stash pop应用上次保存的转换。因此,如果工作树未处于HEAD状态(例如在暂存对索引的更改并执行git stash --keep-index之后),则可能存在冲突。您可以在执行git stash pop之前执行git reset --hard将工作树设置为HEAD状态,以避免冲突。
git stash
git stash --keep-index
git stash pop
git reset --hard
2条答案
按热度按时间noj0wjuj1#
问题来自
--keep-index
。您隐藏的更改与您已经暂存的更改冲突。以下是您可以用来重现
在这种情况下,git不知道bar或baz是否应该出现在foo中。
解决方案是不使用
--keep-index
参数或提交您首先添加的更改(您始终可以在以后修改您的提交)您也可以让您的工作目录处于使用
git stash branch <branchname>
之前的状态(然后您必须合并分支)bnl4lu3b2#
git stash
保存从HEAD状态到工作树状态的转换。它还将工作树设置为 HEAD 状态。git stash --keep-index
保存从HEAD状态到工作树状态的转换。它还将工作树设置为 index 状态。git stash pop
应用上次保存的转换。因此,如果工作树未处于HEAD状态(例如在暂存对索引的更改并执行git stash --keep-index
之后),则可能存在冲突。您可以在执行git stash pop
之前执行git reset --hard
将工作树设置为HEAD状态,以避免冲突。