相同和外部修改文件的Git合并

相同和外部修改文件的Git合并,git,merge,Git,Merge,我从开发人员和git那里继承了一些代码(来自zip文件) 逐步初始化、更改和设置签入 现在,同一个开发人员发布了相同的代码和他的更改,并给了我 另一个zip文件 我如何合并我的更改,我有我的git回购和他最近的更改 从第二个zip文件内容 理想情况下,我想有一个代码,这应该是两个指控 我的更改和开发人员最近的更改 我尝试从主分支创建分支b1,并在其上应用第二个zip文件内容。在分支中提交这些文件,并执行“git checkout master”;git merge b1'-但是,我没有得到我的更

我从开发人员和git那里继承了一些代码(来自zip文件) 逐步初始化、更改和设置签入

现在,同一个开发人员发布了相同的代码和他的更改,并给了我 另一个zip文件

我如何合并我的更改,我有我的git回购和他最近的更改 从第二个zip文件内容

理想情况下,我想有一个代码,这应该是两个指控 我的更改和开发人员最近的更改


我尝试从主分支创建分支b1,并在其上应用第二个zip文件内容。在分支中提交这些文件,并执行“git checkout master”;git merge b1'-但是,我没有得到我的更改,只有我的主分支中他的更改。

听起来你和另一个人都是基于存储库中作为根提交的代码进行工作的。现在你有了这个:

A - B - C - D (master)
其他开发人员的工作也基于提交
A
。因此,提交它的正确位置是
A

首先在那里创建并签出一个分支:
git checkout-b his_work
(或者在gitk中,右键单击commit并选择create a branch)

下一步,放下他的工作,并付诸行动。为了更好,您可以使用git commit--author=“His Name”来显示这是他的作品

现在,签出您的主控(
git checkout master
)并合并他的分支(
git merge his_work

您应该以以下方式结束:

A - B - C - D - E (master)
 \             /
  X -----------
  (his_work)
为了便于解释,以下是您所做的:

A - B - C - D      -      X (his_work)
         (master) ----> 

你把他的作品放在你最近的作品之上,然后合并了它;合并是一个快速的过程:因为master是您合并的分支的祖先,所以您只需将master向前移动到新的提交。

您只得到他的更改的原因是您的分支基于您最近的提交。然后你用他的文件替换了你所有的文件,并提交了它。Git认为这是一次大规模的编辑,用他的文件替换你的文件,而不是合并

为了得到你想要的,你需要在改变与你的分开的地方进行分支。听起来这是你的第一次承诺。因此,您可以:

git checkout <first-commit>
git checkout -b b1        // This just names the branch for the later merge
<copy his files from the zip in>
git checkout master
git merge b1
git签出
git checkout-b b1//这只是为以后的合并命名分支
切换到主分支
git合并b1

从这里,git看到b1是基于第一次提交的,所以它将自那个以后来自master的所有更改视为“并发”更改,这就是您想要的

我担心这个问题我不清楚。谢谢你明确的回答。git规则。