我是git的新手,并且正在使用类似于svn的集中式工作流程。我想定期知道我的状态与中央回购的比较。例如,如果我运行以下命令...
$ git clone git@github.com:centralrepo/test.git
$ cd test; <make some changes inside test/>
$ git commit -a
$ git pull
... git pull说“已经是最新的”。为什么没有git pull报告更改,如果这是正确的行为,有没有办法知道我的本地与遥控器不同步?
答案 0 :(得分:7)
git pull
将获取远程存储库中所做的任何更改,相当于svn update
。但是,它不会提到您的末端是否有更改不在遥控器上。您也可以git fetch
从远程获取更新,而无需将其应用到您的工作区。
使用最新版本的git(例如此处为1.7.2.3)git status
会打印一些信息以帮助您查看,例如:
# On branch master
# Your branch is behind 'origin/master' by 20 commits, and can be fast-forwarded.
这是在我执行了git fetch
后显示的,表示有等待进入我的工作区的更改(通过执行git pull
应用)
相比之下,如果我把它们拉进去并在本地进行更改,git status
告诉我:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
也就是说,我可以将本地更改推送到远程。然后我可以通过git log origin/master..
答案 1 :(得分:3)
“git pull”命令只是从远程仓库中提取更改并将它们合并到您的本地分支。
如果你想看到差异,你应该使用git br -a列出远程分支,然后git diff你的本地分支正在跟踪的远程分支。
答案 2 :(得分:1)
只需使用git fetch
更新本地存储库中的远程分支。该对话框将显示是否有下载的内容,然后使用git diff
或git log
进行比较。