我有一些文件在git中未被跟踪。我做了一些修改,想提交,但意识到我忘了先签入未修改的文件。所以我把文件藏起来,然后添加未修改的版本。
然后,当我将存储应用到存储库时,由于已经添加了文件,我得到了冲突。
如何应用存储库,并强制存储库中的版本优先于存储库中的原始版本?
谢谢
我有一些文件在git中未被跟踪。我做了一些修改,想提交,但意识到我忘了先签入未修改的文件。所以我把文件藏起来,然后添加未修改的版本。
然后,当我将存储应用到存储库时,由于已经添加了文件,我得到了冲突。
如何应用存储库,并强制存储库中的版本优先于存储库中的原始版本?
谢谢
当前回答
使用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
其他回答
保持本地源备份,然后应用强制重置以与GIT回购保持一致。然后更改本地代码并提交。
git reset——hard FETCH_HEAD
TL; diana:
git checkout HEAD path/to/file
git stash apply
长版:
您得到这个错误是因为您想要覆盖的未提交的更改。使用git签出HEAD撤销这些更改。你可以用git checkout HEAD路径/to/file撤销对特定文件的更改。在消除冲突的原因后,您可以像往常一样申请。
要强制git stash pop,使用此命令
git stash show -p | git apply && git stash drop
Git stash显示-p | Git应用
然后是git stash drop,如果你想要丢弃储存的物品。
使用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