I\'m a Git newbie. I recently moved a Rails project from Subversion to Git. I followed the tutorial here: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-yo
I am a git newbie as well. I had the same problem with 'your branch is ahead of origin/master by N commits' messages. Doing the suggested 'git diff origin/master' did show some diffs that I did not care to keep. So ...
Since my git clone was for hosting, and I wanted an exact copy of the master repo, and did not care to keep any local changes, I decided to save off my entire repo, and create a new one:
(on the hosting machine)
mv myrepo myrepo
git clone USER@MASTER_HOST:/REPO_DIR myrepo
For expediency, I used to make changes to the clone on my hosting machine. No more. I will make those changes to the master, git commit there, and do a git pull. Hopefully, this should keep my git clone on the hosting machine in complete sync.
/Nara
I was wondering the same thing about my repo. In my case I had an old remote that I wasn't pushing to anymore so I needed to remove it.
Get list of remotes:
git remote
Remove the one that you don't need
git remote rm {insert remote to remove}
I had this problem recently and I figured it was because I had deleted some files that I did not need anymore. The problem is that git does not know that the files have been deleted and it sees that the server still has it. (server = origin)
So I ran
git rm $(git ls-files --deleted)
And then ran a commit and push.
That solved the issue.
1.
Find out where Git thinks 'origin/master' is using git-remote
git remote show origin
..which will return something like..
* remote origin
URL: me@remote.example.com:~/something.git
Remote branch merged with 'git pull' while on branch master
master
Tracked remote branch
master
A remote is basically a link to a remote repository. When you do..
git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle
..git will push changes to that address you added. It's like a bookmark, for remote repositories.
When you run git status
, it checks if the remote is missing commits (compared to your local repository), and if so, by how many commits. If you push all your changes to "origin", both will be in sync, so you wont get that message.
2.
If it's somewhere else, how do I turn my laptop into the 'origin/master'?
There is no point in doing this. Say "origin" is renamed to "laptop" - you never want to do git push laptop
from your laptop.
If you want to remove the origin remote, you do..
git remote rm origin
This wont delete anything (in terms of file-content/revisions-history). This will stop the "your branch is ahead by.." message, as it will no longer compare your repository with the remote (because it's gone!)
One thing to remember is that there is nothing special about origin
, it's just a default name git uses.
Git does use origin
by default when you do things like git push
or git pull
. So, if you have a remote you use a lot (Unfuddle, in your case), I would recommend adding unfuddle as "origin":
git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
or do the above in one command using set-url:
git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git
Then you can simply do git push
or git pull
to update, instead of git push unfuddle master
I came to this question looking for an explanation about what the message "your branch is ahead by..." means, in the general scheme of git. There was no answer to that here, but since this question currently shows up at the top of Google when you search for the phrase "Your branch is ahead of 'origin/master'", and I have since figured out what the message really means, I thought I'd post the info here.
So, being a git newbie, I can see that the answer I needed was a distinctly newbie answer. Specifically, what the "your branch is ahead by..." phrase means is that there are files you've added and committed to your local repository, but have never pushed to the origin. The intent of this message is further obfuscated by the fact that "git diff", at least for me, showed no differences. It wasn't until I ran "git diff origin/master" that I was told that there were differences between my local repository, and the remote master.
So, to be clear:
"your branch is ahead by..." => You need to push to the remote master. Run "git diff origin/master" to see what the differences are between your local repository and the remote master repository.
Hope this helps other newbies.
(Also, I recognize that there are configuration subtleties that may partially invalidate this solution, such as the fact that the master may not actually be "remote", and that "origin" is a reconfigurable name used by convention, etc. But newbies do not care about that sort of thing. We want simple, straightforward answers. We can read about the subtleties later, once we've solved the pressing problem.)
Earl
I had a problem that was similar to this where my working directory was ahead of origin by X commits
but the git pull
was resulting in Everything up-to-date
. I did manage to fix it by following this advice. I'm posting this here in case it helps someone else with a similar problem.
The basic fix is as follows:
$ git push {remote} {localbranch}:{remotebranch}
Where the words in brackets should be replaced by your remote name, your local branch name and your remote branch name. e.g.
$ git push origin master:master