拉大师进入新的分支显示你的冲突

时间:2013-03-06 18:33:14

标签: git

如何将master拉入我正在处理的当前分支,并查看冲突?

另外,我应该合并或改组,不确定两者中哪一个是正确的。

3 个答案:

答案 0 :(得分:2)

首先从远程拉出所有分支

git pull origin

执行此操作后,所有分支都将被拉出(包括主分支)。

现在您要将master合并到当前分支中,以便执行以下操作:

git merge master

如果它自动解决了任何冲突,那么您已完成

如果它没有自动合并更改,那么您需要解决冲突。

要解决冲突,请编辑〜/ .gitconfig并添加

[merge]
    tool = meld

现在安装meld diff工具(例如你在Ubuntu上做sudo aptitude install meld

你会得到一个这样的窗口

Meld screenshot

在左侧,您将拥有本地版本。在右侧,您将拥有远程版本。

中间是合并后的理想状态。选择并从两侧选取所有位并将它们放在中间后,保存(CTRL + S)并退出meld。 Git现在将告诉您有关合并的下一个文件,在完成合并之前,您将执行相同操作。

您可以在此结束时执行git diff,以确保您所做的合并是正确的。

同时运行您的代码以确保它能够按您的意愿运行。

然后您提交git commit -am "commit_message"并将更改推送到您的分支。

答案 1 :(得分:1)

为什么你必须进入当前的分支?听起来很麻烦。

你如何获得最新的大师,然后只是比较差异?这样你就不会在不知道自己要进入的情况下合并。

在这种情况下:

# in your master branch do
git pull origin master

切换到您正在处理的功能分支:

git checkout your_branch_name

既然您在新的分支中,您可以看到差异(绿色是您添加的,假设颜色也是如此)

git diff master

当然你可以在不进行结账的情况下看到来自大师的差异。所以在这种情况下,你拉动原始主,然后做一个差异:

# in master
git pull origin master

# now do a diff while still in master
git diff your_new_feature_branch

答案 2 :(得分:0)

合并和变基都有其优点和缺点。

rebase的优点:   保持提交历史“更清洁”,因为当前“master”的头部将是您当前分支的祖先。有时人们不喜欢在历史上埋葬太久的共同祖先。有些人认为在提交之前总是将功能分支重新设置为master。

rebase的缺点:   完全重写你的分支的历史(所有sha1将是不同的)。如果您或其他任何人从您的功能分支创建分支,然后您尝试将其合并回来,这可能会造成麻烦。

一个可能的好经验法则:没有广泛发布的rebase分支因此不是其他分支的基础。