繁体   English   中英

使用不同的目录结构在git存储库中移动补丁

[英]Moving patches in git repository with different directory structure

抱歉,标题有些冗长和混乱。 我们有一个具有以下目录结构的git存储库(根代表存储库根;名称是虚构的):

/
/dir1/
/dir2/
/dir2/subdir1/
/dir2/subdir2/

一个团队同事用/dir2/subdir1的副本创建了一个新的git存储库,即/dir2/subdir1成为了新存储库的根。 我们在该新存储库中做了一些(〜15)次提交,然后我们决定要在旧存储库中复制新提交。

什么是执行此操作的最佳方法?

当然,我们可以从新存储库中创建一个补丁并将其作为旧提交中的单个提交应用,但是这样做会丢失历史的详细程度。

在此期间,旧存储库中没有触及/dir2/subdir1提交,因此绝对不应有冲突。

解决方案是使用git format-patchgit am 在新的存储库中,我做了一个

git format-patch $revision

,其中$revision是新存储库中与旧存储库状态相对应的修订,即添加/dir2/subdir1的修订。 这大约创建了15个文件,其中包含每个提交的补丁。

然后,我移至旧的存储库,并使用git am应用刚刚创建的补丁。 我只需要指定必须应用这些补丁的目录:

git am --directory dir2/subdir1 $patches

,其中$patches是在上一步中创建的文件。

现在,提交已从新存储库移到旧存储库,我很高兴!

选项1 :分别创建每个提交git format-patchgit format-patch ),然后按顺序应用于旧仓库

选项2 :将新存储库添加为旧存储库的远程存储库,获取分支,在本地存储库中检出该分支,并选择所有提交(使用gitk则更容易)。

选项3 :将新存储库添加为旧存储库的远程存储库,获取分支,并将其与旧存储库中的分支合并。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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