一切都在标题中......
我读到了这个问题:Viewing Unpushed Git Commits
但我不明白为什么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
时,为什么我的提交没有出现?
答案 0 :(得分:22)
原因是您的主分支实际上有一个远程分支,在您的分支已设置为跟踪的origin / master上。
这意味着每次你提交掌握,然后做一个git status
git会告诉你本地分支和远程分支之间的提交是不同的。
创建新分支时,默认情况下没有相应的远程分支。你可以通过git branch -a
来看到这一点。这将显示所有已设置的远程分支。
所以有两件事情在发挥作用:
1)您的本地分支没有远程分支 2)您的分支未设置为跟踪远程分支的更改
制作远程分支并为本地分支设置跟踪的一种简单方法是将本地分支推送到远程分支:
git checkout new_feature
git push -u origin new_feature
通常情况下,如果您只是在没有-u
开关的情况下进行推送,则不会设置跟踪,但仍会推送您的分支。但是当你传入-u
开关时,它会告诉git你还想设置你的分支来跟踪远程分支的变化。
执行此操作然后进行更改并提交它们,然后执行git status
,您将得到“您的分支是1个提交的原始/ new_feature的预期结果”