Git Merge旧修改版和新修改版

时间:2011-02-02 20:58:40

标签: git merge

我正在努力改进一个流行的php论坛软件。一个月前,我已经用1.0版的git启动了一个存储库:

git init .
(copied files here of version 1.0)
git add .
git commit

之后我正在努力改进这个软件1个月(提交)。现在有新的官方版本。版本是1.1。我必须合并论坛的新功能而不删除我的代码。我应该使用什么git命令?

我尝试做以下事情:

1) git branch vendor
2) git checkout vendor
3) delete old files and put files of version 1.1
4) git checkout master
5) git merge vendor

但是当我这样做时,我失去了所有的修改。哪里出错了? 谢谢。

1 个答案:

答案 0 :(得分:2)

理想情况下,您正在处理的软件应该已经有一个可公开访问的某种存储库,您应该可以使用git-svn或其他一些导入程序。假设由于某种原因不可能,这就是我建议的。

创建一个名为“vendor”的分支,但是从你添加1.0版本的提交开始(看起来它是你的root提交)。每当出现新版本时,请检查该分支,删除所有内容,然后在发布中转储(正如您所说)。重要的部分:从不在此分支中包含任何更改。然后,您可以将其自由合并到主分支中。您可能会更频繁地遇到此工作流程中的合并冲突,因为新版本可能会进行大量修改。工作的危险。

你的历史最终应该是这样的:

x [1.0] ------- x [1.1] ------------ x [1.2] (vendor)
 \               \                    \
  o - o - o - o - o  - o - o - o - o - o (master)

顺便说一下,粗体文字是你出错的地方。您从主分支启动了供应商分支,因此当您提交v1.1时,您的历史记录如下所示:

x [1.0] - o - o - o - o - o (master) - x [1.1] (vendor)

很自然地,当你将供应商合并到master中时,你最终得到了v1.1。