git newbie error - 如何恢复

时间:2009-05-09 10:55:20

标签: git branch

可能与Git - pulling changes from clone back onto the master

有关

当我发现我需要进行“实验性”更改时,我正在开发一个ASP.NET项目,这些更改可能在生产版本中可能需要也可能不需要。

显而易见的事情是创建一个分支。

然而,由于我熟悉darcs和svn而不是git,我认为克隆是创建分支的“正常”方式(我现在知道git branch更适合。)

我继续研究克隆中的实验性更改,同时还对原始存储库中的其他更改进行了研究。

从那时起,我发现生产版本中的实验性更改,并且希望合并这两个更改集。

如果我最初做过一个分支而不是一个克隆,这将是微不足道的。我确信在单独的存储库之间进行合并并不太难,但是通过查看文档我不认为可以使用单个命令完成(简单的pull不起作用。)

我还没有(还)明确地将一个存储库配置为另一个存储库的“远程”,但我猜这将是解决方案的一部分。

当时的上游存储库没有使用任何VCS - 它只是一个充满拉链的目录,版本号附加到文件名。

所以我想知道:

  • 跨存储库合并更改集的最简单方法是什么? (我不指望有任何重大冲突。)
  • 克隆而不是分支有多害?我是否通过这样做丢失了任何信息,例如共享历史,共同依赖?

3 个答案:

答案 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,然后在另一个存储库中应用。这样就可以保留所有重要信息。