将git历史记录从分支中的特定文件夹移动到另一个分支中的同一文件夹

时间:2017-06-28 10:54:37

标签: git

TL; DR:如何将特定于文件夹的git历史记录和更改从一个分支移动到另一个分支,忽略与该特定文件夹无关的所有其他提交。

我错误地在分支上工作了好几天,正确地提交了与该分支相关的更改,但也提交了应该完全在另一个分支中的更改。

"对"提交(应保留在当前分支中的那些)和"错误的"提交(需要移动到新分支的提交)是一种类型,因此挑选每个提交将是耗时的。还有很多。

因为所有"错误"更改位于同一文件夹中,此类文件夹没有任何"权限"提交,我认为找到一种方法将特定于文件夹的git历史记录移动到另一个分支中会更容易。

这可能吗?我在搜索这样的解决方案时失败了。大多数人都找到了如何从repo-to-repo转移。

感谢。

1 个答案:

答案 0 :(得分:1)

cherry-pick可以获取提交列表,因此您只需提供正确的提交列表。
由于您有一个标准(文件夹)来选择正确的提交,因此不会耗费时间:

git rev-list <START_POINT>^..<END_POINT> -- path/to/the/folder

这将列出修改文件夹START_POINT内文件的END_POINT(包含)和path/to/the/folder之间的所有提交SHA1。

然后,为了挑选它们,只需将此列表作为git cherry-pick的输入:

git cherry-pick $(git rev-list <START_POINT>^..<END_POINT> -- path/to/the/folder)