Subject: Re: Pulling one commit at a time.

From: Sanjiv Gupta <[email-masked]>
Date: Mon, 24 Aug 2009 11:52:07 +0530

Nanako Shiraishi wrote:
> Quoting Sanjiv Gupta <[email-masked]>
>
>   
>> I just wanted to know how can I pull one commit at a time from public
>> repository.
>> e.g.
>> when I first cloned from the public repo, it was at X. now it has
>> reached Y. I just want to pull x+1.
>>     
>
> When your histories look like this:
>
>       A                 your 'master'
>      /
>  ---X---U---V---W---Y   public 'master' (your 'origin')
>
> instead of creating a single merge like this with "git pull":
>
>       A---------------M your 'master' (fully merges 'origin')
>      /               / 
>  ---X---U---V---W---Y   public 'master'
>
> you want to create a history like this?
>
>       A---J             your 'master' (lacks V, W and Y)
>      /   /
>  ---X---U---V---W---Y   public 'master'
>
> For that, you can fetch first.
>
>  git fetch origin
>
> Then look at the history in gitk
>
>  gitk master origin
>
> And find the commit you are interested in merging (U in the above picture). And merge it.
>
>  git merge origin~3
>
> Replace "origin~3" in the example above with whatever commit you want to merge the entire history leading to it.
>
> You can repeat this final step as many times you want. For example, if you want create a history like this:
>
>       A---J---K---L---M your 'master'
>      /   /   /   /   / 
>  ---X---U---V---W---Y   public 'master'
>
> you can do so by repeating the last step for V, W and Y in turn.
>
> In general the public history isn't necessarily a single straight line like this picture and it doesn't make sense to merge one at a time for all the commits on the public branch, but if that is what you really want to do, you can do so.
>
>   
Excellent description. Thanks for that. I want to merge commits one by 
one because I want to run a regression suite on each commit and 
therefore know if any one is causing failures.

- Sanjiv