git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: failed to push

From
Chris Packham <judge.packham@gmail.com>
Date
Mar 1, 2010, 21:42 UTC
Message-ID
<a038bef51003011342j3d761d0cmd96d8641f96ed15@mail.gmail.com>
In-Reply-To
<4B8C303E.7050605@gmail.com>
Hi,
On Mon, Mar 1, 2010 at 1:23 PM, Bruce Korb <bruce.korb@gmail.com> wrote:
Show 13 quoted lines
> Bruce Korb wrote:
>> Hi,
>>
>> This message has no meaning at all.  I know it failed to push.
>> I can tell from the comment "[rejected]".  It would be nice
>> to know *WHY* it was rejected so I can fix the problem.
>> How do I determine the cause, please?  Thank you!!  Regards, Bruce
>>
>> $ git push
>> To ssh://bkorb@autogen.git.sourceforge.net/gitroot/autogen/autogen
>>  ! [rejected]        master -> master (non-fast forward)
>> error: failed to push some refs to 'ssh://bkorb@autogen.git.sourceforge.net/gitroot/autogen/autogen'
>>

This basically means that the push you have attempted is not a simple fast forward. This basically means that the commit your work is based on is not present in the remote or that there have been other pushes to the remote and you need to pull them into your repository to handle any merging.

Show 9 quoted lines
>
> A little follow up context:
>
> I used the "git gui citool".  I saw a button to allow an amendment to a
> previous checkin.  That seemed most appropriate, so I did that.  I had
> previously pushed the commit to the sourceforge repository, so my guess
> was that pushing would amend the checkin at sourceforge, too.  Nope.
> Won't let me push.  Won't tell me why, either.  Now what?  Thanks.
> --

OK that kind of sheds some light. I take it you've just switch from a centralized VCS?

In a DVCS like git all commits happen locally, the only time commits are sent to the remote repo are when you've pushed so 'git commit --amend' or 'git gui' with the amend box ticked only makes the change locally it won't implicitly figure out that a commit has been pushed out into the ether. One rule of thumb with git (I think it applies to most DVCSes) is not to amend a commit that has been pushed for this very reason. Strictly speaking all commits are immutable, when you amend a commit you actually create a whole new commit and your old one is marked for garbage collection (if nothing else is based off it).

In terms of recovering from your present situation I'd try the following (Disclaimer: maybe you shouldn't try these based solely on my advice. I'm still learning too)

  git pull
  <resolve merge issue, 'git mergetool' is your friend>
  git push
  I think this will basically sort things out but you may need to hand
hold a few things through a merge depending on how different the 2
commits are.
 - or -
  git push -f
  If you're the only one using that repository its probably fine but
this could cause problems for others if they've cloned the repo before
your amended commit.
Previous: Bruce KorbNext: Bruce Korb
Message 3 of 10 in “failed to push”
  1. Bruce KorbMar 1, 2010
  2. Bruce KorbMar 1, 2010
  3. Chris PackhamMar 1, 2010
  4. Bruce KorbMar 1, 2010
  5. Bruce KorbMar 1, 2010
  6. Erik Faye-LundMar 2, 2010
  7. Jakub NarebskiMar 2, 2010
  8. Chris PackhamMar 2, 2010
  9. add notes on re-writing historyChris Packham, Mar 2, 2010
  10. Jacob HelwigMar 1, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.