Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Trying to solve an issue when Commiting to origin repo.

jakub kruszewski September 13, 2015

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

 

 

 

 

3 answers

1 accepted

0 votes
Answer accepted
Seth
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2015

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.

0 votes
jakub kruszewski September 14, 2015

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


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!

 

 

Seth
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 15, 2015

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

Tim Crall
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 15, 2015

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

Seth
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 15, 2015

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

Tim Crall
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 15, 2015

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.

0 votes
Tim Crall
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2015

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.

 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events