可能与Git - pulling changes from clone back onto the master
有关当我发现我需要进行“实验性”更改时,我正在开发一个ASP.NET项目,这些更改可能在生产版本中可能需要也可能不需要。
显而易见的事情是创建一个分支。
然而,由于我熟悉darcs和svn而不是git,我认为克隆是创建分支的“正常”方式(我现在知道git branch
更适合。)
我继续研究克隆中的实验性更改,同时还对原始存储库中的其他更改进行了研究。
从那时起,我发现生产版本中的实验性更改是,并且希望合并这两个更改集。
如果我最初做过一个分支而不是一个克隆,这将是微不足道的。我确信在单独的存储库之间进行合并并不太难,但是通过查看文档我不认为可以使用单个命令完成(简单的pull
不起作用。)
我还没有(还)明确地将一个存储库配置为另一个存储库的“远程”,但我猜这将是解决方案的一部分。
当时的上游存储库没有使用任何VCS - 它只是一个充满拉链的目录,版本号附加到文件名。
所以我想知道:
答案 0 :(得分:7)
在您原来的“未分支”git存储库中,运行以下命令:
git remote add name_it_anything /path/to/the/other/git/repository
git fetch name_it_anything
git merge name_it_anything/master
这将合并n name_it_anything
中的所有更改。如果你不想要所有这些,只需要选择一些提交,你可以git log name_it_anything/master
查看提交列表,然后git cherry-pick [SHA]
查看要合并的每个提交。
答案 1 :(得分:3)
关于问题的第二部分:
克隆而不是分支有多害?我是否通过这样做丢失了任何信息,例如共享历史,共同依赖?
Git是一个分布式版本控制系统。 DVCS的整点是能够在不同的存储库之间来回合并更改。
答案 2 :(得分:0)
我认为你可以在一个存储库中使用git-format-patch,然后在另一个存储库中应用。这样就可以保留所有重要信息。