git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Martin Langhoff <martin.langhoff@gmail.com>
To: Howard Miller <howard@e-learndesign.co.uk>
Cc: git@vger.kernel.org
Subject: Re: Commited to wrong branch
Date: Tue, 15 Sep 2009 12:55:58 +0200	[thread overview]
Message-ID: <46a038f90909150355h20b39c71w4af7e2be2920fdbb@mail.gmail.com> (raw)
In-Reply-To: <26ae428a0909150331q391ed39ak622902d175b46d84@mail.gmail.com>

On Tue, Sep 15, 2009 at 12:31 PM, Howard Miller
<howard@e-learndesign.co.uk> wrote:
> I am resurrecting a discussion from a week or two back (been on
> holiday).  As follows...
>
> I had made some changes to some files and then done a commit. Only
> then did I realise that I had the wrong branch checked out. To make
> matters worse I then did a 'git reset HEAD^' which means that I can
> now no longer switch branches. I am stuck. I had some advice (thanks!)
> but it was not complete. I'd appreciate some more help.

Hi Howard,

just to make sure I understand your issue

  1 - you were on branch X, thinking your were on branch Y
  2 - edit, diff, commit, realised the mistake
  3 - git reset HEAD^

so if you now run `git status` and `git diff` it will show your
changes as if they were uncommitted and unstaged.

(Before you start with various attempts to recover below, a great
trick is to make an instant-backup in case things go wrong: cd .. / ;
cp -pr moodle.git moodle-backup.git ; cd moodle.git )

You can now try do do

  4 - git checkout Y

and if the changes are on files that don't change between X and Y,
then git will change the branches and keep your changes there. If the
files are different between X and Y, it won't work.

What I can recommend is to save your patch, as follows

  5 - git diff > tempchanges.patch
  6 - git reset --hard # this will discard your changes, careful
  7 - git checkout Y
  8 - patch -p1 < tempchanges.patch

The patch may not apply cleanly :-) -- note that patch is more
tolerant of iffy merges than git's internal implementation ("git
apply") -- so it will succeed more often... but the results need
review.

There is a more git-style approach that is to use git-stash -- it uses
git-apply and may not do what you want. The steps are

 5a - git stash # will save your changed files into a "stashed commit"
and clear out the changes from your working copy
 6a - git checkout Y
 7a - git stash apply

hth,



m
-- 
 martin.langhoff@gmail.com
 martin@laptop.org -- School Server Architect
 - ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 - http://wiki.laptop.org/go/User:Martinlanghoff

  reply	other threads:[~2009-09-15 10:56 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-15 10:31 Commited to wrong branch Howard Miller
2009-09-15 10:55 ` Martin Langhoff [this message]
2009-09-15 11:05   ` Howard Miller
2009-09-15 11:16     ` Martin Langhoff
2009-09-15 12:10       ` Howard Miller
2009-09-15 12:46         ` Martin Langhoff
2009-09-15 12:58           ` Howard Miller
2009-09-15 13:06             ` Björn Steinbrink
2009-09-15 13:12               ` Howard Miller
2009-09-15 13:54               ` Martin Langhoff
2009-09-15 14:11                 ` Howard Miller
2009-09-15 20:39                 ` Björn Steinbrink
2009-09-15 20:52                   ` Howard Miller
2009-09-15 21:53                   ` Martin Langhoff
2009-09-15 22:30                     ` Björn Steinbrink
2009-09-15 13:27             ` Howard Miller
2009-09-15 13:45               ` Howard Miller
2009-09-15 14:08                 ` Johannes Sixt
2009-09-15 13:46               ` Martin Langhoff
2009-09-15 11:19   ` Björn Steinbrink

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46a038f90909150355h20b39c71w4af7e2be2920fdbb@mail.gmail.com \
    --to=martin.langhoff@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=howard@e-learndesign.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).