如何将我的代码与来自git中不同存储库的代码合并

时间:2012-05-25 15:36:47

标签: git merge git-branch

一个月前,我开始在github上的一个私有存储库上开发一个新函数。我克隆了存储库并将其分支。从那以后我就一直在分支机构工作。

与此同时,代码被移动到github上的另一个存储库。现在我需要将我所做的事情与新的开发项目进行合并。

我的想法:

1 - 签出新的存储库。

2 - 查找我的存储库中的最后一个常见提交和新存储。这应该是master分支上的最后一次提交。

3 - 在主分支和我的工作分支之间创建补丁。

4 - 将补丁应用到新存储库。

这是对的吗?什么应该是git命令做3和4?

2 个答案:

答案 0 :(得分:1)

git-rebase应该做你想做的事情,即将你的更改重播到新的回购:

git remote add new-repo /path/to/new-repo
git fetch new-repo
git checkout hacking-branch
git rebase hacking-branch new-repo/master

答案 1 :(得分:0)

如果新存储库确实是旧存储库的分支/克隆,那么您应该只需使用新网址替换.git/config中的网址,然后git fetch将所有网址从新项目。完成后,您可以根据需要使用git rebasegit merge

如果您不想跟踪一个项目,而是想要跟踪这两个项目(旧项目中是否有正在进行的开发,您可能仍想偶尔提取?),那么您只需将新存储库添加为另一个远程项目 - git remote add newproj <URL>。您甚至可以将旧的重命名为origin之外的其他内容,以便可以将origin名称用于新存储库。

这样可以避免需要修改补丁路径,因为您只需将本地存储库指向新位置,并且可以直接访问所有新提交以及旧提交。