All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Bill Lear <rael@zopyra.com>
Cc: git@vger.kernel.org
Subject: Re: Stupid question on getting branch from yesterday
Date: Wed, 14 Feb 2007 13:13:09 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0702141250300.20368@woody.linux-foundation.org> (raw)
In-Reply-To: <17875.25882.784307.731860@lisa.zopyra.com>



On Wed, 14 Feb 2007, Bill Lear wrote:
>
> I have not yet figured this one out: I have not tagged anything, but
> know that I checked in something lame sometime between now and two days
> ago.  How do I get my working repo to be that as it was, say, yesterday?
> 
> Do I do:
> 
> % git log --since="2 days ago"
> 
> parse, the output for the commit I want, and then do
> 
> % git reset <SHA>

No, use that only if you want to throw away everything you did after 
that particular point.

If you just want to go and look at it more closely, with git-1.5 you do

	git checkout <SHA>

which will just detatch your HEAD from any current branch, and just move 
you there. But with an older git that doesn't like the detached state, 
you'd could instead do

	git checkout -b nonlame-branch <SHA>

which actually creates a new branch with the <SHA> as the beginning point, 
and switches to it. That will work with any version (including 1.5, of 
course).

You can then decide to re-do the branch without the lame commit. One 
particularly simple thing to do (if it's just one lame commit, and you 
don't want to *remove* it, but just fix it up a bit) is to literally check 
out the tip of tree juat AT the lame commit, and then you can use

	git commit --amend

to actually change it.

So depending on what your situation is, this sequence actually works:

	#
	# Create and check out a "fixes" branch that has the 
	# known-broken commit as its head commit
	#
	git checkout -b fixes <BROKEN-COMMIT>

	.. edit edit edit to fix the broken commit ..

	#
	# Then, just _replace_ the broken commit with the fixed state
	# by doing a "git commit --amend"
	#
	git commit -a --amend

	#
	# ok, now the "fixed-branch" is in good shape, but we
	# want to re-surrect our original 'master' branch WITH the 
	# fix, and based on the fixed branch, so we rebase the
	# master branch# _onto_ the fixed state in "fixes", with
	# the broken commit (that we do _not_ want to include) as
	# the base.
	#
	git rebase --onto fixes <BROKEN-COMMIT> master

Somebody else should verify that "git rebase" thing. I still find the 
syntax for that thing rather illogical for these kinds of things.  
Possibly because I never do it myself.

		Linus

  parent reply	other threads:[~2007-02-14 21:13 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-14 19:38 Stupid question on getting branch from yesterday Bill Lear
2007-02-14 19:49 ` Shawn O. Pearce
2007-02-14 19:54   ` Junio C Hamano
2007-02-14 20:24   ` Bill Lear
2007-02-14 20:28   ` Bill Lear
2007-02-14 20:36     ` Jeff King
2007-02-14 19:50 ` Junio C Hamano
2007-02-14 21:13 ` Linus Torvalds [this message]
2007-02-14 21:25   ` Junio C Hamano

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=Pine.LNX.4.64.0702141250300.20368@woody.linux-foundation.org \
    --to=torvalds@linux-foundation.org \
    --cc=git@vger.kernel.org \
    --cc=rael@zopyra.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.