threads / discuss / 17187

how to apply patch in the middle

Subject: how to apply patch in the middle

## tl;dr

2 messages between Jan 15, 2009 and Jan 15, 2009.

replies: 1people: 2as markdown or json

bill lam· Jan 15, 2009, 01:35 UTC · lore
I want to change history to rewrite
  - A - B - C - D - E - ..
 
as
 - A - C' - D - E - ..

because rebase/squash cannot automatically resolve conflicts, I generate a patch file from A to C

  git diff A C >pat

However I don't know how apply this patch and cancel the old B and C. Sorry for this newbie question.

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
唐詩008 杜甫  望嶽
    岱宗夫如何  齊魯青未了  造化鍾神秀  陰陽割昏曉
    盪胸生層雲  決眥入歸鳥  會當凌絕頂  一覽眾山小
Shawn O. Pearce· Jan 15, 2009, 01:39 UTC · re: bill lam · lore

Re: how to apply patch in the middle

bill lam <cbill.lam@gmail.com> wrote:
Show 7 quoted lines
> I want to change history to rewrite
> 
>   - A - B - C - D - E - ..
>  
> as
> 
>  - A - C' - D - E - ..

Uh, "git rebase -i A", change "pick" on line "C" to "squash". This should have the same impact as what you are trying.

Show 6 quoted lines
> because rebase/squash cannot automatically resolve conflicts, I
> generate a patch file from A to C
> 
>   git diff A C >pat
> 
> However I don't know how apply this patch and cancel the old B and C.
One way you can insert this is:
  git rebase -i A^
  change "pick" on line "A" to "edit"
  delete lines "B" and "C".
  when it stops for amend, don't amend.
  git apply --index pat
  git commit -m "my new B and C"
  git rebase --continue
-- 
Shawn.

← back to recent threads