threads / discuss / 11223

"remote end hung up unexpectedly"

Subject: "remote end hung up unexpectedly"

## tl;dr

4 messages between Dec 10, 2007 and Dec 11, 2007.

replies: 3people: 2as markdown or json

Clifford Heath· Dec 10, 2007, 11:49 UTC · lore

Be patient with me, it's my first day on git... I like it better than svn already, but I need a bit of help.

After cloning a remote repository, I wanted to update (rebase) an existing remote branch to get the latest master commits, so I switched to it using git checkout, then did a "git merge origin/master" and it updated my local copy so it looked reasonable... I have changes to add to this branch, but I wanted a proper base, so I did a "git commit" and a "git push". The push gave me the above message.

I've checked ssh access (don't have shell) to the other side, my PK is set up.

What went wrong? How can I diagnose it further (-v doesn't help)

I understand that to add my further changes, I should set up a local branch to track this updated remote branch. But I'm assuming that the rebase must be done while switched to the remote branch...?

Clifford Heath.
Andreas Ericsson· Dec 10, 2007, 13:11 UTC · re: Clifford Heath · lore

Re: "remote end hung up unexpectedly"

Clifford Heath wrote:
> Be patient with me, it's my first day on git... I like it better than 
> svn already,
Welcome to a better world.
Show 14 quoted lines
> but I need a bit of help.
> 
> After cloning a remote repository, I wanted to update (rebase) an existing
> remote branch to get the latest master commits, so I switched to it using
> git checkout, then did a "git merge origin/master" and it updated my local
> copy so it looked reasonable... I have changes to add to this branch, but
> I wanted a proper base, so I did a "git commit" and a "git push". The push
> gave me the above message.
> 
> I've checked ssh access (don't have shell) to the other side, my PK is 
> set up.
> 
> What went wrong? How can I diagnose it further (-v doesn't help)
> 

How did you clone it? If you cloned via git:// protocol, you most likely can't push back there. The git-daemon supports pushing, but does no authentication.

If you cloned via ssh it's a bit harder to diagnose, since all git knows is that the ssh-server closed its connection. For security reasons, it doesn't necessarily tell you why it did that, so it's hard to know what the real problem is.

> I understand that to add my further changes, I should set up a local branch
> to track this updated remote branch. But I'm assuming that the rebase must
> be done while switched to the remote branch...?
> 

Not really. You can do "git rebase --onto origin/master master". However, since you merged origin/master earlier, a rebase will only tell you that you're up-to-date.

"git help rebase" might be worth looking into though.
-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
Andreas Ericsson· Dec 11, 2007, 06:54 UTC · lore

Re: "remote end hung up unexpectedly"

I'm bringing this back on the list. It's very uncharitable of you to not do so yourself, as it prevents others with the same problem to find the answer in the archives. Also, I don't run a private support-center for git, so emailing me privately with questions regarding it is just plain rude. Everyone's entitled to a second chance though, so read on below.

Clifford Heath wrote:
Show 9 quoted lines
> On 11/12/2007, at 12:11 AM, Andreas Ericsson wrote:
>> How did you clone it? If you cloned via git:// protocol, you most likely
>> can't push back there. The git-daemon supports pushing, but does no
>> authentication.
> 
> That was a problem - shame git didn't say "connection refused" instead,
> that would have been more obvious. The manpages are loaded with
> git-specific jargon - almost impenetrable for a newbie.
> 

Git doesn't see that. It only knows it didn't get a proper response from the other end.

Show 6 quoted lines
> 
>> Not really. You can do "git rebase --onto origin/master master". However,
>> since you merged origin/master earlier, a rebase will only tell you that
>> you're up-to-date.
> 
> I don't think that anything I've done has affected the remote repository.

It hasn't. The only way you can update the remote repository, short of editing it manually, is to use "git push". That's not strictly true, but for the sake of this argument, it will suffice.

> At least, no changes are visible in the web view.
> 
You can merge between local branches and still get the "up-to-date" message.
Show 13 quoted lines
> Most of the instructions and manpages I've read show how to do things
> to local repositories and push changes back. Here's what I most recently
> tried, perhaps you can see where I went wrong. I've changed the project
> name for PROJECT, and the branch name with BRANCH
> 
> git clone git+ssh://cjheath@repo.or.cz/srv/git/PROJECT.git
> cd PROJECT
> git checkout --track -b BRANCH origin/BRANCH
> git rebase origin/master
> 
> At this point the local branch seems to have the content I want, so I tried
> to push the changes back in:
> 
You mean, "at this point BRANCH seems to have the content I want"?
Show 8 quoted lines
> git push
> 
> Which replied:
> 
> error: remote 'refs/heads/BRANCH' is not a strict subset of local ref 
> 'refs/heads/BRANCH'. maybe you are not up-to-date and need to pull first?
> error: failed to push to 'git+ssh://cjheath@repo.or.cz/srv/git/PROJECT.git'
> 

Yes. What you did caused history to be rewritten. Push is fast-forward[1] only by default, to prevent published history from being modified, so when you moved one line of development onto another you effectively changed its ancestry.

If you do

git checkout BRANCH git reset --hard origin/BRANCH git merge origin/master git push

you will achieve the desired end-result. If you really, really want a linear history, you can do

git push -f origin BRANCH

but beware that this will cause errors for everyone fetching from you, and for yourself if you fetch into multiple local clones of the same remote.

I suggest you sit down and really read through the git rebase man-page to understand what it does and the precautions one must take when rewriting history like that.

[1]fast-forward:
    A fast-forward is a special type of merge where you have a
    revision and you are "merging" another branch's changes that
    happen to be a descendant of what you have. In such cases,
    you do not make a new merge commit but instead just update
    to his revision. This will happen frequently on a tracking
    of a remote repository.
-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
Clifford Heath· Dec 11, 2007, 07:15 UTC · re: Andreas Ericsson · lore

Re: "remote end hung up unexpectedly"

On 11/12/2007, at 5:54 PM, Andreas Ericsson wrote:
> I'm bringing this back on the list. It's very uncharitable of you  
> to not
> do so yourself,

My humble apologies - I just hit reply. I've previously only encountered majordomo configurations where the reply goes to the list (including when I operated majordomo for ten years), so I made a mistake.

Show 12 quoted lines
>>> Not really. You can do "git rebase --onto origin/master master".  
>>> However,
>>> since you merged origin/master earlier, a rebase will only tell  
>>> you that
>>> you're up-to-date.
>> I don't think that anything I've done has affected the remote  
>> repository.
>
> It hasn't. The only way you can update the remote repository, short of
> editing it manually, is to use "git push". That's not strictly  
> true, but
> for the sake of this argument, it will suffice.
Thanks, that's good confirmation.
Show 15 quoted lines
>> Most of the instructions and manpages I've read show how to do things
>> to local repositories and push changes back. Here's what I most  
>> recently
>> tried, perhaps you can see where I went wrong. I've changed the  
>> project
>> name for PROJECT, and the branch name with BRANCH
>> git clone git+ssh://cjheath@repo.or.cz/srv/git/PROJECT.git
>> cd PROJECT
>> git checkout --track -b BRANCH origin/BRANCH
>> git rebase origin/master
>> At this point the local branch seems to have the content I want,  
>> so I tried
>> to push the changes back in:
>
> You mean, "at this point BRANCH seems to have the content I want"?

No, I mean that the recent changes have been pulled from origin/master and my tree looks like what I want the remote origin/BRANCH to look like. Though if I pushed, I don't know that its revision history would necessarily be in the preferred order.

Show 15 quoted lines
>> git push
>> Which replied:
>> error: remote 'refs/heads/BRANCH' is not a strict subset of local  
>> ref 'refs/heads/BRANCH'. maybe you are not up-to-date and need to  
>> pull first?
>> error: failed to push to 'git+ssh://cjheath@repo.or.cz/srv/git/ 
>> PROJECT.git'
>
> Yes. What you did caused history to be rewritten. Push is fast- 
> forward[1]
> only by default, to prevent published history from being modified,  
> so when
> you moved one line of development onto another you effectively  
> changed its
> ancestry.

Ok, I think I follow that. I can see I need to spend more time reading the man pages. Thanks for your help...

Clifford Heath.
Show 37 quoted lines
> If you do
>
> git checkout BRANCH
> git reset --hard origin/BRANCH
> git merge origin/master
> git push
>
> you will achieve the desired end-result. If you really, really want  
> a linear
> history, you can do
>
> git push -f origin BRANCH
>
> but beware that this will cause errors for everyone fetching from  
> you, and
> for yourself if you fetch into multiple local clones of the same  
> remote.
>
> I suggest you sit down and really read through the git rebase man- 
> page to
> understand what it does and the precautions one must take when  
> rewriting
> history like that.
>
>
> [1]fast-forward:
>    A fast-forward is a special type of merge where you have a
>    revision and you are "merging" another branch's changes that
>    happen to be a descendant of what you have. In such cases,
>    you do not make a new merge commit but instead just update
>    to his revision. This will happen frequently on a tracking
>    of a remote repository.
>
> -- 
> Andreas Ericsson                   andreas.ericsson@op5.se
> OP5 AB                             www.op5.se
> Tel: +46 8-230225                  Fax: +46 8-230231

← back to recent threads