Git分支状态输出

时间:2014-12-08 17:43:08

标签: git

有人可以解释这个git输出:

从主服务器提取分支以在本地节点上运行:

> git pull origin xyz

> git status
# On branch xyz 
#Your branch is ahead of 'origin/xyz' by 22 commits.
#Changed but not updated: 
  ... lots of modified stuff

好的,我们想要清除本地更改......

> git log | head
#commit a49b36fd6635f7dd6f72bd256231b3179920ffa4 ...

> git reset --hard a49b36fd6635f7dd6f72bd256231b3179920ffa4
# On branch xyz
# Your branch is ahead of 'origin/xyz' by 22 commits. (huh?)

nothing to commit (working directory clean)

所以,如果它是干净的并且没有什么可以提交的,那么“原点之前的分支”是什么意思?运行“git diff”不返回任何输出。

2 个答案:

答案 0 :(得分:3)

没有参数的

git diff会使您的工作区与索引区别开来。

如果你想对分支进行差异化,请告诉它:

git diff origin/xyz

当git说你'领先'时,意味着你有相对于上游远程分支的未按下的更改。在这种情况下,您的上游似乎是'origin / xyz'。如果再次按下然后再运行状态,此消息将消失。

同样,如果您git fetch然后git status,如果获取了更改,您会看到一条消息,指出您已经落后多次提交。如果您在开始编辑后已经未按下更改并且遥控器已经更改(即您已经分道扬),那么您将看到自己都领先和落后!

顺便说一下,如果要清除本地更改,可以使用git clean代替reset --hard。或者,您可以将两行简化为git reset --hard HEAD


编辑如果您希望丢弃本地更改,则可以使用reset将工作区移动到远程参考。

git reset --hard origin/xyz

这会将当前分支移动到与origin/xyz相同的提交。请注意,任何更改的文件都将永远被吹走!如果您想要随身携带更改,请确保先将它们藏起来(或提交然后樱桃挑选)。

答案 1 :(得分:0)

该分支正在追踪另一个分支,即"上游"它的。这意味着您在分支中拥有的内容非常新,如果您想要删除该消息,只需使用

即可
git push

在那个分支上。


如果您想永远不要弹出该消息,请使用

git config --unset branch.xyz.merge