因此,一位朋友处理了一堆他从未编写版本的代码,并将其交给我。他最初给了我版本A,即使他有更新版本B可用。我将A放入一个git存储库(比如说Visual Studio Team Services),然后做了一些提交,产生了版本C.现在他已经将版本B放在一个git存储库中(比如Bitbucket)。我如何比较版本C和B,并合并(B,A)和(C,A)之间的所有差异,以得到一个最终版本D,其中包含他的更新和我的?请记住,Bitbucket和TFS(分别为B和C版本)上的repos没有常见的git提交,尽管它们都是基于相同的基本版本A.
我可以看到几种方法,但不确定每种方法的缺点: 1)将Bitbucket版本B添加为我的TFS版本C的上游,并获取上游/主服务器,然后执行git diff。 2)将文件从版本B复制到保存版本C的目录中,然后像手动更改文件一样提交它们。 3)完全不同的东西,比如rebase。
我对git的理解非常基础,所以请解释一下我是5岁(好吧,不是真的,但你知道我的意思)。
注意:在最终的repo历史记录中,可以在一次提交中对A到B进行所有更改,但保留A和C之间的各个提交会很好。
此外,从版本A到版本B,朋友没有维护目录结构,他已将所有内容移动到根目录的子目录。因此,如果版本A具有文件a.txt,则版本B具有文件TRUNK / a.txt。
答案 0 :(得分:3)
简单地:
结帐A
从A
生成一个新分支
(来自“Git version control and Team Foundation Build”)
复制B
添加并提交:
(来自“Create, Connect, and Publish using Visual Studio with Git”)
在主分支中合并代表C
的分支