Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git with centralized workflow

Tags:

git

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?

like image 728
Ravi Avatar asked Dec 21 '22 18:12

Ravi


2 Answers

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..

like image 130
araqnid Avatar answered Jan 07 '23 22:01

araqnid


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.

like image 40
Jason LeBrun Avatar answered Jan 07 '23 21:01

Jason LeBrun