Trying to solve an issue when Commiting to origin repo.
Asked by jakub kruszewski:

Hello.

Yesterday I was trying to commit from my local repository to the origin. I have to admit, that I am still a beginner in using the sourcetree, so I must be doing something wrong. I have succesfully commited to local master, so the repo is clean already. Currently I am trying to fix a order in my repository branch, since I get a following error when trying to commit to origin. I believe something is not right with my master order:

The message:

"Updates were rejected because a pushed branch tip is behind it's remote hint counterpart. Check out this branch and integrate the remote changes hint ( git. pull ) before pushing again. "

Can someone help me ?

ss.jpg

ss2.jpg

ss3.jpg

[](https://community.atlassian.com/t5/Sourcetree-questions/Trying-to-solve-an-issue-when-Commiting-to-origin-repo/qaq-p/439607?attachment-id=6062){#link_1173bd7dd91c26}  
[](/tnckb94959/attachments/tnckb94959/sourcetree-questions/13156/1/ss.jpg){#display_1173bd7dd91c26_0}  
[](https://community.atlassian.com/t5/Sourcetree-questions/Trying-to-solve-an-issue-when-Commiting-to-origin-repo/qaq-p/439607?attachment-id=6063){#link_1173bd7dd91c26_0}  
[](/tnckb94959/attachments/tnckb94959/sourcetree-questions/13156/2/ss2.jpg){#display_1173bd7dd91c26_2}  
[](https://community.atlassian.com/t5/Sourcetree-questions/Trying-to-solve-an-issue-when-Commiting-to-origin-repo/qaq-p/439607?attachment-id=6064){#link_1173bd7dd91c26_1}  
[](/tnckb94959/attachments/tnckb94959/sourcetree-questions/13156/3/ss3.jpg){#display_1173bd7dd91c26_4}


Answers:
author: Seth
body: Hmm, it looks like you have a disconnected HEAD somehow. I'm going to gues that after Rafal committed some changes to master, you tried to checkout those changes instead of pulling those changes.

In the future, you will get a warning anytime you attempt to checkout a TAG (as opposed to a branch). Until you really understand what that means and whether it is what you want, you should always heed that warning (in other words, don't checkout tags).

To fix your current situation:

1) Try to right-click "master" in the branch list on the left, and select "merge" (make sure that "create a new commit even if fast-forward is possible" is UNchecked).

If SourceTree allows that, try your push again, otherwise comment on this and I'll provide a more complex solution.


author: jakub kruszewski
body: What exactly is TAG ?

"Hmm, it looks like you have a disconnected HEAD somehow. I'm going to gues that after Rafal committed some changes to **master**, you tried to checkout those changes instead of pulling those changes."

<br />

Seth - Did you mean **origin** ? I mean each of us has the local repository, which is called **master** right ? The changes he commited were changes to his local repo. called **master** ( first ) and then he commited ( pushed his commit ) to remote repository called **origin** ? Am I correct ?

Thank you  

Unfortunately I was only able to merge the commit. I cannot push to origin.

ss.jpgss2.jpg

Finally I ended up with rebuilding the repository from scratch ( deleted the current one and created a new one using the last stable commit available ). Now I will do my best to keep everything clean, nice and tidy.

Thanks 4 help guys!

comments: author: Seth
body: A tag is just a name for a specific commit. HEAD is a special tag: <http://stackoverflow.com/questions/2304087/what-is-head-in-git>In terms of master, you've got a major (possibly dangerous) misconception."master" is not the name of your repository. Your local repository does not have a name for itself, only for remotes. "master" is a BRANCH that exists within your local repo. "origin/master" is a branch that exists on the remote. The Push and Pull operations are designed to keep your local master branch in sync with the origin/master branch.You can not see any of your co-developer's local branches unless you add his local repo as a remote.Next time you are in a situation where your coworker has pushed commits to master, that appropriate way to get them is to checkout your local "master" (never check out HEAD) and either PULL or MERGE. (Pull actually does a fetch and a merge, but assumes that the branch you want to merge from is origin/master).


author: Tim Crall
body: What would checking out HEAD do? It seems like it would do nothing at all since HEAD is, by definition, always checked out, right?


author: Seth
body: When you check out any tag or specific commit (including HEAD), you no longer have any branch checked out. If you're just trying to view code, no big deal, but if you commit, you end up with commits that aren't part of any branch. In fact, the situation displayed in the OP's screenshots is EXACTLY what happens in these cases. You can't push or pull (it's not a branch), and if you choose to check out a branch without assigning a tag to your new commit, you'll lose it (technically, the commit is still in the repo, but without a relevant branch or tag, it can be very hard to find without extensive knowledge of the command line git client).


author: Tim Crall
body: ok, that makes sense. Seems a little weird that checking out HEAD would detach your head if the commit HEAD was pointing to was the tip of a branch (which it normally should be if your HEAD wasn't detached already). But technically it could be the tip of more than one branch, so I guess git couldn't know which branch you meant to be on at that point. And there'd obviously be no reason to checkout HEAD anyway, since HEAD is just a pointer to whatever commit you have checked out.


author: Tim Crall
body: You have a bit of a mess there. Your HEAD is not on master, or any other branch.

I would create a new branch pointing at the current HEAD. Then you can checkout master and merge your new branch into it. Then try pushing.

Also, in regards to your first sentence, you don't "commit" to the origin. You commit locally and "push" to the origin. Important distinction.