无法取消暂存分支

Posted

技术标签:

【中文标题】无法取消暂存分支【英文标题】:Cannot unstage branch 【发布时间】:2015-07-02 10:05:32 【问题描述】:

我现在对我的分支的分期很困惑。

我在一个叫lazy-load的分支上

Git status 显示:

nothing to commit, working directory clean

git diffgit diff --cached 什么都不显示。

但是如果我推送到origin lazy-load,会推送大量文件,几乎是整个repo,包括之前从repo中删除的文件。

我哪里错了?我试过git rm --cachedgit reset HEAD

我似乎无法取消暂存文件,甚至看不到分支上的暂存文件。

【问题讨论】:

尝试 git reset --hard <commit> 将您的 HEAD 指针重置为先前的提交并丢弃此后的所有更改, rm --cached 不会取消暂存文件。它分阶段从 repo 中删除文件并将文件留在工作树中,留下一个未跟踪的文件。 ***.com/questions/6919121/… 通过上述评论,我能够解决问题。 【参考方案1】:

git status 只会显示未提交的更改,git diff 也一样。除非您没有设置快速转发,否则它可能会显示您的分支和远程等效项之间有多少提交差异。

要与您的分支的远程版本进行比较,您应该进行获取并与远程进行比较,以查看您实际推送的内容:

git fetch --all
git diff [branch] origin/[branch]

【讨论】:

刚刚更新了帖子。由于某种原因,我从 repo 中删除的文件仍处于暂存状态。【参考方案2】:

尝试git reset --hard <commit> 将您的 HEAD 指针重置为先前的提交并丢弃此后的所有更改,git rm --cached 不会取消暂存文件 - 它会暂存从存储库中删除文件并将文件保留在您的工作中树,给你留下一个未跟踪的文件。 *

git cheat sheet

*related post

【讨论】:

以上是关于无法取消暂存分支的主要内容,如果未能解决你的问题,请参考以下文章

JGit Java Git 库取消暂存文件

如何 Git 取消暂存所有暂存文件? [复制]

10-git-取消暂存的文件

Git暂存流程

git checkout 将未暂存的文件带到新分支

为啥有两种方法可以在 Git 中取消暂存文件?