1
msg7086 2022-03-17 23:50:18 +08:00
有些 Git GUI 可以做 partial cherry-pick / rebase ,也就是变更塞进来的时候可以先排除掉不要的部分然后再提交。
|
2
rbe 2022-03-17 23:56:19 +08:00
rebase 可以选择丢弃或者修改某些 commit
|
3
a132811 2022-03-18 00:03:09 +08:00
把 B 的部分目录合并到 C?
考虑一下这样做吧 ``` # 基本 C 创建一个分支 mergeC git checkout mergeC C # 把 B 的指定目录,copy 到 mergeC git checkout B -- <path/to/(指定目录)> # 检查一下 diff 确认一下 git diff ## 最后提交 mergeC git commit -am 'merge: merge 部分目录' git push origin mergeC:mergeC ``` |
5
Elietio OP @a132811 这样做,强制 checkout 指定目录会直接覆盖掉,原始的 commit 好像也会没了
|
6
Elietio OP @msg7086 明天我再看看,主要是我要在上百个 commit 找到涉及这个目录的那几十个,而且担心别人的一些 commit 里面同时提交了这个目录和其他目录,处理起来也比较麻烦
|
7
msg7086 2022-03-18 00:30:06 +08:00
|
9
a132811 2022-03-18 00:52:46 +08:00
@Elietio
这样子呢: git checkout -b mergeBC B git merge C git commit -am "merge B and C"; # 现在的 mergeBC 就有全部的记录,且包含所有的目录 git checkout -b mergePartialBC mergeBC git checkout C -- <B 不想合并的目录> git commit -am "merge partial B and C"; # 现在的 mergePartialBC 就有全部的记录,且只包含你只想合并的目录 git checkout -b restB mergePartialBC git checkout B -- <B 不想合并的目录> git commit -am "merge rest B" ;# 现在 restB 有全部的记录,以及 B 剩余未合并的目录 |