threads / discuss / 39823

Merge after rename

Subject: Merge after rename

## tl;dr

2 messages between Jul 9, 2015 and Jul 10, 2015.

replies: 1people: 2as markdown or json

Phil Susi· Jul 9, 2015, 20:44 UTC · lore

I'm trying to cherry pick an old change from an old branch onto the current master, and since the old change, the directory structure was altered and the modified files were moved. Instead of detecting the new location of the file and applying the changes to it, git is re-adding the old file at the old location in its entirety. How can I get it to correctly notice the rename and merge the changes in at the file's new location?

Jacob Keller· Jul 10, 2015, 03:52 UTC · re: Phil Susi · lore

Re: Merge after rename

On Thu, Jul 9, 2015 at 1:44 PM, Phil Susi <psusi@ubuntu.com> wrote:
Show 11 quoted lines
> I'm trying to cherry pick an old change from an old branch onto the current
> master, and since the old change, the directory structure was altered and
> the modified files were moved.  Instead of detecting the new location of the
> file and applying the changes to it, git is re-adding the old file at the
> old location in its entirety.  How can I get it to correctly notice the
> rename and merge the changes in at the file's new location?
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hi Phil,

One way is to format-patch the original commit, and run it through a program like filterdiff, or edit the applied locations by hand. You might also be able to use the merge subtree option. https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging is where I would start.

For example, I would try something like
git cherry-pick -X subtree=path/to/strip -X subtree=path/to/add <commit>
You might also have success with
git cherry-pick --strategy=subtree
which attempts to guess. Hopefully this helps!

Regards, Jake

← back to recent threads