TL; DR:如何将特定于文件夹的git历史记录和更改从一个分支移动到另一个分支,忽略与该特定文件夹无关的所有其他提交。
我错误地在分支上工作了好几天,正确地提交了与该分支相关的更改,但也提交了应该完全在另一个分支中的更改。
"对"提交(应保留在当前分支中的那些)和"错误的"提交(需要移动到新分支的提交)是一种类型,因此挑选每个提交将是耗时的。还有很多。
因为所有"错误"更改位于同一文件夹中,此类文件夹没有任何"权限"提交,我认为找到一种方法将特定于文件夹的git历史记录移动到另一个分支中会更容易。
这可能吗?我在搜索这样的解决方案时失败了。大多数人都找到了如何从repo-to-repo转移。
感谢。
答案 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)