繁体   English   中英

Git:将源代码复制到没有历史记录的新分支

[英]Git: Copy source code to new branch without history

我在 git 存储库中有 2 个分支: commonmyown

我想将源从一个分支复制到另一个分支,但我想在common分支的历史记录中查看仅与功能迁移相关的提交(从myowncommon )。

是否可以在没有历史记录的情况下复制源代码,或者是否需要新的存储库?

此外,可能有必要从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM