Re: How to pull remote branch with specified commit id?

Previous thread: Re: [PATCH 2/2] grep: don't call regexec() for fixed strings by Junio C Hamano on Tuesday, January 13, 2009 - 1:13 am. (5 messages)

Next thread: Re: [PATCH next] notes: fix core.notesRef documentation by Junio C Hamano on Tuesday, January 13, 2009 - 2:24 am. (1 message)
From: Emily Ren
Date: Tuesday, January 13, 2009 - 2:08 am

Git experts,

I want to pull remote branch with specified commit id, how to do it?

Below command can get remote branch
$git pull remote refs/heads/$branch_name

Below command doesn't work
$git pull remote objects/$commit_id

Thanks,
Emily
--

From: Andreas Ericsson
Date: Tuesday, January 13, 2009 - 2:16 am

You need to fetch it first, and then merge the commit you want. The
tools operating the fetching protocol only use refs, so if you want
to fetch (or pull) a specific version that has neither a tag nor a
branch head pointing to it, you'll have to write a new tool for that.

The end-result of the following command will be, barring side-effects
in the remote-tracking branches, identical to what you're trying to
do though:
git fetch remote && git merge $commit_id

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
--

From: Emily Ren
Date: Tuesday, January 13, 2009 - 6:15 am

Andreas,

I tried your method, it works. Thank you very much !

Emily

--

From: Johannes Sixt
Date: Tuesday, January 13, 2009 - 2:43 am

You can't, and that is so by design.

Consider this: You accidentally push a branch with confidential data to a
public repository. You notice it early, and quickly delete the branch
using 'git push the-repo :refs/heads/that-branch'. At this time the
objects with the confidential data are still lingering in the public
repository. But with the current behavior noone can access them even if
the SHA1 happens to be known.

-- Hannes
--

From: Brad King
Date: Tuesday, January 13, 2009 - 2:57 pm

Might a repack (perhaps an automatic one) put the object in a pack
(perhaps in a delta chain) that can be fetched through another ref?

-Brad
--

From: thestar
Date: Tuesday, January 13, 2009 - 10:54 pm

Doesn't this line of reasoning only apply to the ssh and git transports?
  (ie, the file and rsync transport would retrieve it regardless)

--

From: Johannes Sixt
Date: Wednesday, January 14, 2009 - 12:02 am

You are right. Http and rsync would happily ship the object.

-- Hannes
--

From: Johannes Sixt
Date: Wednesday, January 14, 2009 - 12:01 am

No, assuming that-branch was the only ref that contained the objects.

Even if the repack happens before the branch is deleted, the objects that
were *only* in that-branch will not be sent out.

-- Hannes

--

Previous thread: Re: [PATCH 2/2] grep: don't call regexec() for fixed strings by Junio C Hamano on Tuesday, January 13, 2009 - 1:13 am. (5 messages)

Next thread: Re: [PATCH next] notes: fix core.notesRef documentation by Junio C Hamano on Tuesday, January 13, 2009 - 2:24 am. (1 message)