Re: "remote end hung up unexpectedly"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


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.


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@xxxxxxxxxx/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"?

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@xxxxxxxxxx/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@xxxxxx
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux