git把两个分支放在一起

时间:2014-04-28 00:34:25

标签: git merge

我似乎高估了我对git的了解。

一周前,我开始研究一个项目。我从服务器下载它并开始使用git进行常规工作流程。

几天后,一位客户通知我,他决定介绍一些"改进"进入他的代码。他不是程序员,但无论如何他想添加一些变化。因此,不能选择学习如何使用git。

起初我以为我只是从服务器下载他的代码(我没有将任何代码上传到他的服务器),从中创建一个新的分支并将其与我的代码合并。

那么,我做了什么:  我在master中创建了一个新的分支(我的代码在哪里) -

 git branch client_branch
 git checkout client_branch

然后我从项目的文件夹中删除了所有代码    并仅插入客户的代码。

我在client_branch中做了一个新的提交 -

git commit -m clients_changes

然后为了安全起见我做了:

git checkout master
git branch merging
git checkout merging

最后:

  git merge client_branch

一切都好。我没有冲突。但我敢打赌,必定存在冲突。因为现在我没有使用代码版本,所有的更改都完全消失在某些文件中。

请帮忙,有可能以某种方式保存他和我的变化吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

问题的关键是找到客户用于进行更改的修订版。 让我们说他使用了修订版X

git branch client_changes X
git checkout client_changes
# Apply client changes
git branch merging master
git checkout merging
git cherry-pick client_changes # Apply the changes by the client
# Verify the changes

这样您就可以将客户端的更改应用到您的版本中。但是,找到客户端使用的基本修订版本至关重要,或者至少尽可能接近,或者在使用客户端代码覆盖代码时撤消自己的更改。

答案 1 :(得分:0)

好的,问题解决了。

在使用git diff玩了很长时间之后,看看我们代码的不同版本是如何通过控制台来实现它的。

问题的核心可以表示如下:

文件A(我的):
  The first line

文件B(客户端):

The 
second
line

如果我做简单的“git merge”命令,独立于我所在的分支,我将得到第一个或第二个版本的文件。 但我需要警告每一个差异!因为我无法确定哪个版本更好。

情况变得更糟,因为我使用了代码格式化程序,它格式化代码使其看起来更好(实际上这是一件好事,但在这种情况下它起了个坏玩笑)。

所以我开始使用kdiff3实用程序:

enter image description here

它允许我手动查看每个文件之间的差异,并决定是否要合并。

我必须承认不应该建议进入这种情况。但事情发生了,我没有找到更好的解决方案。

希望它有所帮助。