22

一切都在标题中...

我读了这个问题:查看未推送的 Git 提交

但我不明白为什么git status在主分支中显示所有未推送的提交,但在其他分支中不显示任何内容。

有人可以解释一下吗?

编辑

这是我做/得到的命令和输出:

aurelien@server:/home/repo/$ git branch
  new_feature
* master

aurelien@server:/home/repo/$ git checkout new_feature
Switched to branch 'new_feature'

aurelien@server:/home/repo/$ echo test > newfile.txt
aurelien@server:/home/repo/$ git add newfile.txt
aurelien@server:/home/repo/$ git commit -m "Test commit"
[new_feature 51c6a64] Test commit
1 file added
aurelien@server:/home/repo/$ git status
# On branch new_feature
nothing added to commit

为什么我的提交在使用时没有出现git status

4

1 回答 1

24

原因是您的 master 分支实际上有一个远程分支,位于您的分支已设置为跟踪的 origin/master 上。

这意味着每次您向 master 提交,然后执行git statusgit 都会告诉您本地分支和远程分支之间的哪些提交不同。

创建新分支时,默认没有对应的远程分支。你可以通过做看到这一点git branch -a。这将向您显示所有已设置的远程分支。

所以有两件事在起作用:

1) 您的本地分支没有远程分支 2) 您的分支未设置为跟踪远程分支的更改

创建远程分支并为本地分支设置跟踪的一种简单方法是将本地分支推送到远程分支:

git checkout new_feature
git push -u origin new_feature

通常情况下,当你在没有-u开关的情况下直接推送时,不会设置跟踪,但你的分支仍然会被推送。但是当你传入-u开关时,它会告诉 git 你还想设置你的分支来跟踪来自远程分支的更改。

在您执行此操作然后进行更改并提交它们之后,git status您将得到“您的分支是 1 次提交的原始/新功能的头”的预期结果

于 2013-06-06T08:44:02.023 回答