threads / discuss / 19756

Git merge selective files

Subject: Git merge selective files

## tl;dr

5 messages between Jun 9, 2009 and Jun 9, 2009.

replies: 4people: 4as markdown or json

joe higton· Jun 9, 2009, 09:53 UTC · lore
Hi,
     I want to merge changes from a branch but only to one file, I
don't want to pick up the changes from other files. I've scoured
google and the docs a bit but I can't find anything useful. Is this
possible?
Ta,
  Joe.
-- 
Gmail is watching you!!!!!!

Please don't publish this email address or use it for anything SPAM
risky. My more public email address is joe@draxil.uklinux.net
Avery Pennarun· Jun 9, 2009, 18:32 UTC · re: joe higton · lore

Re: Git merge selective files

On Tue, Jun 9, 2009 at 5:53 AM, joe higton<draxil@gmail.com> wrote:
>     I want to merge changes from a branch but only to one file, I
> don't want to pick up the changes from other files. I've scoured
> google and the docs a bit but I can't find anything useful. Is this
> possible?
You might want to try just using
    git diff old-version new-version | patch -p1

(where old-version and new-version are the appropriate commit ids or branch names or whatever)

And then committing the results.
Have fun,
Avery
Alex Riesen· Jun 9, 2009, 19:35 UTC · re: joe higton · lore

Re: Git merge selective files

2009/6/9 joe higton <draxil@gmail.com>:
Show 5 quoted lines
> Hi,
>     I want to merge changes from a branch but only to one file, I
> don't want to pick up the changes from other files. I've scoured
> google and the docs a bit but I can't find anything useful. Is this
> possible?

Generally - no. But you can have a merge with only the content of your choice:

  git merge -s ours --no-commit other

then copy the changes you need manually, and commit. See the manpage of git merge about "ours" merge strategy.

Avery Pennarun· Jun 9, 2009, 19:39 UTC · lore

Re: Git merge selective files

On Tue, Jun 9, 2009 at 3:18 PM, Joshua Jensen<jjensen@workspacewhiz.com> wrote:
Show 9 quoted lines
> On Tue, Jun 9, 2009 at 5:53 AM, joe higton<draxil@gmail.com> wrote:
>>     I want to merge changes from a branch but only to one file, I
>> don't want to pick up the changes from other files. I've scoured
>> google and the docs a bit but I can't find anything useful. Is this
>> possible?
>
> I like this one:
>
> http://jasonrudolph.com/blog/2009/02/25/git-tip-how-to-merge-specific-files-from-another-branch/

Careful... that *replaces* the files with the ones from the branch. It doesn't *merge* them. Although that may be exactly what you want.

And the "'merge --squash' and don't commit the changes you don't want" option looks okay to me too.

Avery
Junio C Hamano· Jun 9, 2009, 20:54 UTC · re: Avery Pennarun · lore

Re: Git merge selective files

Avery Pennarun <apenwarr@gmail.com> writes:
> And the "'merge --squash' and don't commit the changes you don't want"
> option looks okay to me too.

Whatever you do to prepare the tree contents to suit the desire of the original request, I think it is essential not to record the result of such an operation as a merge (because it is not, and it will screw up later merges).

Use of "merge --squash" in this thread is a very good suggestion.
Good job.

← back to recent threads