use*_*149 14 git github git-filter-branch
我有一个功能分支的巨石.而不是一个大规模的PR成为主人,我想把它分成3个小时.
理想情况下,我想将功能分支中的一些独立代码单独提取到PR中.此代码位于新目录中,尚未调用,因此它将是一个相对安全的PR.但是,我不想仅复制目录并创建单个提交和PR,而是希望保留新PR的更改的所有提交历史记录.
这可能使用Git吗?我已经研究了filter-branch,但似乎是将repo拆分为两个,而不是将更改的diff分成两个(如果这是有道理的).
Github拉请求总是涉及一个分支.如果要"拆分拉取请求",请确保将其拆分为提交,然后为要生成的每个拉取请求创建一个分支,并确保每个此类功能分支都具有所有相关提交.
看起来好的策略可能是在主分支旁边创建3个分支,挑选每个分支的相关提交,在main上删除它们,并且主要与三个分支中的每个分支合并.然后,您可以为每个分支和共享历史记录创建PR.
有没有办法将文件从包括其提交历史记录的分支中提取到新分支中?
你提交一个提交,意味着整个repo进入一个分支,而不仅仅是一些文件.
一个好的选择是重置你不希望他们的内容预分支的文件
--x--x--x (master)
\
y--y--y (branch B1 with mixed work)
\
z (new branch B2, but with some files reset to master)
Run Code Online (Sandbox Code Playgroud)
B2从B1您想要的文件开始并包含它们的历史记录.
但是B2还包括B1您希望成为的其他文件master.
您可以执行B2以下操作git reset --soft master:a git status将告诉您需要执行的所有更改,以便您的索引能够反映主数据.只是不添加涉及您要保留的文件的更改.
并且不要承诺.你只是想改变舞台回master了一些文件.
(另见" 实际用途git reset --soft? ")
完成后,git reset --soft B2将HEAD移回B2(但索引记录了反映主文件所需的所有更改和删除).
您现在可以提交,其他文件已恢复为master和您想要的文件保持不变,完全相同B1.
| 归档时间: |
|
| 查看次数: |
14977 次 |
| 最近记录: |