作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在使用 git-p4 将 Perforce 存储库的一部分克隆到 git 存储库中。我检查过的树具有以下 Perforce“分支”结构:
repo/releaseA
repo /发布B
repo /功能A
repo /功能B
我在本地 git 仓库中有一堆 git 提交到 featureA 目录;但是,我想将这些提交“ rebase ”到 featureB 目录中。有没有办法将最初应用于一个目录的一组补丁/提交转换到另一个目录?
最佳答案
是的。如果您的提交影响仅 repo/featureA
这将非常容易:
mkdir patches
git format-patch -o patches master..my_featureA_branch
git am patches/* -p3 --directory=repo/featureB
大功告成。
如果您的提交更改了 repo/featureA 之外的文件,您需要将其删除,
cat >mystuff.sed <<\EOD
/^(From [0-9a-f]{40}|diff --git )/!{H;$!d}
x
/^From /b
${h;s,.*--,--,;x}
\,^diff[^\n]* [ab]/repo/featureA/,!{$!d;x;b}
${p;x}
EOD
和
sed -s -i -r -f mystuff.sed patches/*
在 git am
之前。任何对 repo/featureA
没有任何影响的补丁,在这种情况下你必须 git am --skip
。
关于git - 将来自一个子树的提交应用到同一 repo 中的另一个子树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326233/
我是一名优秀的程序员,十分优秀!