我有一些文件在git中没有被跟踪。我做了一些修改,想提交它们,但意识到我忘记了先签入未修改的文件。所以我把文件藏起来,然后添加未修改的版本。然后,当我将隐藏文件应用到存储库时,由于已经添加了文件,我会遇到冲突。我如何应用隐藏,并强制使用隐藏中的版本优先于存储库中的原始版本?谢谢
tktrz96b1#
使用git checkout代替git stash apply。
git checkout
git stash apply
警告:下面的命令会将当前目录(.)中的所有文件还原到它们的隐藏版本。如果您有未提交或未暂存的更改,它们将永久丢失:
.
git stash push <pathspec>...
git stash -p
在运行此命令之前,使用git status检查是否没有未提交或未暂存的更改。
git status
# WARNING: uncommitted/unstaged changes will be permanently lost $ git checkout stash -- . $ git commit
如果对工作目录中的其他文件进行了更改,而这些更改需要保留,那么下面是一个不那么麻烦的替代方法:
$ git merge --squash --strategy-option=theirs stash
请注意,这只适用于问题中描述的情况,即你在创建stash后提交了一次(如果没有提交,git会快进,这不是我们想要的)。如果索引中有变化,或者合并操作会触及本地有变化的文件,git将拒绝合并。
$ git checkout stash -- <paths...>
或交互地
$ git checkout -p stash
nimxete22#
git stash show -p | git apply然后git stash drop(如果您想删除隐藏的项目)。
git stash show -p | git apply
git stash drop
pdtvr36n3#
要强制git stash pop,请运行以下命令
git stash pop
git stash show -p | git apply && git stash drop
gupuwyp24#
TL;DR:
git checkout HEAD path/to/file git stash apply
详细版本:
出现此错误是因为要覆盖未提交的更改。请使用git checkout HEAD撤消这些更改。您可以使用git checkout HEAD path/to/file撤消对特定文件的更改。删除冲突原因后,可以照常应用。
git checkout HEAD
git checkout HEAD path/to/file
pn9klfpd5#
保留本地源代码备份,然后应用强制重置以与GIT repo保持一致。然后更改本地代码并提交。git重置--硬FETCH_HEAD
wfypjpf46#
在我的示例中,git checkout stash --将抛出此错误
git checkout stash --
error: Your local changes to the following files would be overwritten by checkout: ... files ... Please commit your changes or stash them before you switch branches. Aborting
解决办法是做git checkout stash -- /path/to/each/individual/file。
git checkout stash -- /path/to/each/individual/file
6条答案
按热度按时间tktrz96b1#
使用
git checkout
代替git stash apply
。警告:下面的命令会将当前目录(
.
)中的所有文件还原到它们的隐藏版本。如果您有未提交或未暂存的更改,它们将永久丢失:git stash push <pathspec>...
或git stash -p
),请勿使用此命令,因为 * 所有其他文件中的更改将丢失 *。在运行此命令之前,使用
git status
检查是否没有未提交或未暂存的更改。如果对工作目录中的其他文件进行了更改,而这些更改需要保留,那么下面是一个不那么麻烦的替代方法:
请注意,这只适用于问题中描述的情况,即你在创建stash后提交了一次(如果没有提交,git会快进,这不是我们想要的)。
如果索引中有变化,或者合并操作会触及本地有变化的文件,git将拒绝合并。
或交互地
nimxete22#
git stash show -p | git apply
然后
git stash drop
(如果您想删除隐藏的项目)。pdtvr36n3#
要强制
git stash pop
,请运行以下命令gupuwyp24#
TL;DR:
详细版本:
出现此错误是因为要覆盖未提交的更改。请使用
git checkout HEAD
撤消这些更改。您可以使用git checkout HEAD path/to/file
撤消对特定文件的更改。删除冲突原因后,可以照常应用。pn9klfpd5#
保留本地源代码备份,然后应用强制重置以与GIT repo保持一致。然后更改本地代码并提交。
git重置--硬FETCH_HEAD
wfypjpf46#
在我的示例中,
git checkout stash --
将抛出此错误解决办法是做
git checkout stash -- /path/to/each/individual/file
。