合并来自github中两个存储库的更改

时间:2015-12-17 07:13:02

标签: git github

我有一个项目的git repo。由于代码库中存在一些问题,很难识别和修复,为了满足截止日期,我在本地机器上创建了一个新项目,并开始重新开发整个应用程序。开发完成后,我运行git init命令,然后运行git remote add origin <path to the original repo>

当我尝试推送更改时,git不允许我推送更改,而我收到的消息是you need to at least perform a single commit。我不知何故必须保护我的更改并在服务器上创建另一个临时仓库,最后将我的更改推送到新的仓库。

我需要将我的新回购更改移至我的原始仓库,最好是在新分支上。我怎么能这样做?请让我知道完成这项工作的步骤。

2 个答案:

答案 0 :(得分:3)

这对git来说不是问题。看看答案here。对你而言,这将是:

cd <<original_repo>>
git remote add new_repo <<url_to_new_repo>>
git fetch new_repo
git push origin refs/remotes/new_repo/master:refs/heads/new_repo_master

这将在origin中创建一个名为new_repo_master的新分支,其中包含来自新存储库中master分支的提交。

答案 1 :(得分:0)

有两种可能的解决方案,

子模

将存储库A复制到较大项目B中的单独目录中,或者(可能更好)将存储库A克隆到项目B中的子目录中。然后使用git submodule使此存储库成为 子模块

对于松散耦合的存储库来说,这是一个很好的解决方案,其中存储库A中的开发仍在继续,并且开发的主要部分是A中的单独独立开发。另请参阅SubmoduleSupportGitSubmoduleTutorial页面Git Wiki。

子树合并

您可以使用 子树合并 策略将存储库A合并到项目B的子目录中。 Markus Prinz在Subtree Merging and You中对此进行了描述。

git remote add -f Bproject /path/to/B
git merge -s ours --no-commit Bproject/master
git read-tree --prefix=dir-B/ -u Bproject/master
git commit -m "Merge B project as our subdirectory"
git pull -s subtree Bproject master

或者你可以使用apenwarr(Avery Pennarun)的 git子树工具(repository on github),例如在他的博文A new alternative to git submodules: git subtree中宣布。

我认为在您的情况下(A将成为较大项目B的一部分)正确的解决方案是使用子树合并