我有一些文件在git中未被跟踪。我做了一些修改,想提交,但意识到我忘了先签入未修改的文件。所以我把文件藏起来,然后添加未修改的版本。

然后,当我将存储应用到存储库时,由于已经添加了文件,我得到了冲突。

如何应用存储库,并强制存储库中的版本优先于存储库中的原始版本?

谢谢


当前回答

保持本地源备份,然后应用强制重置以与GIT回购保持一致。然后更改本地代码并提交。

git reset——hard FETCH_HEAD

其他回答

要强制git stash pop,使用此命令

git stash show -p | git apply && git stash drop

TL; diana:

git checkout HEAD path/to/file
git stash apply

长版:

您得到这个错误是因为您想要覆盖的未提交的更改。使用git签出HEAD撤销这些更改。你可以用git checkout HEAD路径/to/file撤销对特定文件的更改。在消除冲突的原因后,您可以像往常一样申请。

Git stash显示-p | Git应用

然后是git stash drop,如果你想要丢弃储存的物品。

保持本地源备份,然后应用强制重置以与GIT回购保持一致。然后更改本地代码并提交。

git reset——hard FETCH_HEAD

使用git checkout而不是git stash apply。

警告:下面的命令将把当前目录(.)中的所有文件恢复到它们的存储版本。如果您有未提交或未分期的更改,它们将永久丢失:

如果您在创建存储之后编辑文件,那么这些更改将会丢失。 如果你只存储特定的文件(使用git stash push <pathspec>…或者git stash -p),不要使用此命令,因为所有其他文件中的更改都会丢失。

在运行该命令之前,使用git status检查是否有未提交或未分期的更改。

# WARNING: uncommitted/unstaged changes will be permanently lost
$ git checkout stash -- .
$ git commit

如果对工作目录中的其他文件进行了更改,那么下面是一个不那么严厉的替代方法:

$ git merge --squash --strategy-option=theirs stash

请注意,这只适用于问题中描述的情况,即在创建存储后进行了提交(如果没有提交,git将快进,这不是我们想要的)。

如果索引中有变化,或者合并将触及有本地变化的文件,git将拒绝合并。可以使用。从存储中检出单个文件

$ git checkout stash -- <paths...>

或者与

$ git checkout -p stash