执行git stash不会删除git本地的更改。

9
当我执行git status命令时,我发现有一些文件有本地更改(似乎是缩进更改)。
当我执行git stash命令时,它并不会将这些文件从队列中移除。它会阻止我的自动拉取脚本从远程git获取更新。
$ git stash
Saved working directory and index state WIP on develop: 05c60a5 Merge remote-tracking branch 'origin/develop' into develop
HEAD is now at 05c60a5 Merge remote-tracking branch 'origin/develop' into develop

$ git stash
On branch develop 
Your branch and 'origin/develop' have diverged and have 23 and 127 different commit(s) each, respectively.

Changed but not updated:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) 

    modified:   config/buznames/businessname_map.
    modified:   public/css/_lib/dropdown.less
    modified:   public/css/_lib/secureBadge.less

1
运行 git diff 命令来查看有何不同。是缩进还是行结尾? - poke
git checkout -- file 似乎对那些文件也不起作用。 - sonicMandelBrot
你有一个名为 .gitattributes 的文件吗?另外,git config core.autocrlf 显示什么? - poke
@poke 运行 git config core.autocrlf 命令并设置为 "true"。 - sonicMandelBrot
1
好的,我也是这么想的。你应该将它设置为false。另请参阅以下问题:为什么在Git中应该使用core.autocrlf=true?如何在git中删除未暂存的更改?,以及git --reset hard后留下未暂存的更改 - poke
显示剩余3条评论
1个回答

6

git stash会删除任何未提交的更改,但不会删除您的本地(未推送)提交。

我认为您的本地分支已经发生了分歧,并且在尝试拉取时遇到了合并冲突。您需要在继续执行拉取请求之前解决这些冲突。

如果您想要删除与远程分支相比您的develop分支中的所有本地提交,可以执行以下操作:

$ git checkout develop
$ git fetch origin develop
# Reset develop branch back to origin/develop
$ git reset --hard origin/develop

注意:这将删除/抛弃你所有的本地提交。你将无法恢复它们。


1
git reset --hard origin/develop 对我很有用。谢谢。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接