I'm new to git, and am using a centralized workflow, similar to svn. I'd like to periodically know what my status is compared to the central repo. For example, if I run the following commands...
$ git clone [email protected]:centralrepo/test.git
$ cd test; <make some changes inside test/>
$ git commit -a
$ git pull
...git pull says "already up-to-date". Why doesn't git pull report changes, and if that's the correct behavior, is there a way to know my local is out of sync with the remote?
git pull
will fetch any changes made in the remote repository into yours, equivalent to svn update
. However, it will not mention if there are changes made at your end that are not on the remote. You can also do git fetch
to fetch updates from the remote without applying them to your workspace.
With recent versions of git (e.g. 1.7.2.3 here) git status
will print some information to help you see this, e.g.:
# On branch master
# Your branch is behind 'origin/master' by 20 commits, and can be fast-forwarded.
This is showing after I did a git fetch
and means there are changes waiting to go into my workspace (applied by doing git pull
)
By contrast, if I pull those in and make and commit a change locally, git status
tells me:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
That is, I have local changes that can be pushed to the remote. I could then list them by doing git log origin/master..
The "git pull" command just pulls in the changes from the remote repo and merges them into your local branch.
If you want to see the difference, you should use git br -a to list the remote branches, and then git diff the remote branch that your local branch is tracking.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With