[英]Git: Copy source code to new branch without history
我在 git 存储库中有 2 个分支: common
和myown
。
我想将源从一个分支复制到另一个分支,但我想在common
分支的历史记录中查看仅与功能迁移相关的提交(从myown
到common
)。
是否可以在没有历史记录的情况下复制源代码,或者是否需要新的存储库?
此外,可能有必要从common
合并到myown
并在进行一些更改后将源复制回作为新提交(并且仅作为该提交 - 没有我之前所说的所有其他提交的历史记录)。
我找到了一种可以使用的更快的方法:
git checkout <branch> -- .
这将用<branch>
的内容替换当前签出分支的内容。
这不会复制<branch>
提交历史。
如果您只想签出一些文件,只需替换.
使用<branch>
的文件路径。
编辑:我发现这只会替换当前文件,并且不会删除不在<branch>
上的文件。
然后最好在结帐之前运行rm -rf
。
看来我已经想出办法了。 例如我们有分支myown
。 我们需要创建一个新的空的(没有历史):
git checkout --orphan common
现在我们需要添加文件:
git add .
并提交所有:
git commit -m "Initial"
您只能在日志中看到此提交(并非全部在我自己的分支中进行)。 现在我们可以签出我自己的分支并继续工作:
git checkout myown
我们可以在自己的分支中进行多次提交(类似于常规工作):
git commit -m "feature1"
...
git commit -m "feature2"
现在我们已经提交了两者,并且日志包含了两者。 我们需要将它复制到common
分支并将其命名为“release1”
git checkout common
git merge --squash myown
git commit -m "release1"
这就是我的第一部分问题。 也很容易提交到common
存储库(例如与 release1 本身相关的小更改/修复)。 您可以进行定期合并以将代码myown
我自己的分支。
清理文件夹但保留隐藏文件/文件夹:
mkdir ../delete
mv * ../delete
rm -rf ../delete
从分支复制源代码:
git checkout <branch> .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.