0

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

另外,我应该合并还是变基,不确定两者中的哪一个是正确的。

4

3 回答 3

2

首先从远程拉出所有分支

git pull origin

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

现在您想将 master 合并到您当前的分支中,因此您可以:

git merge master

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

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

要解决冲突,请编辑您的 ~/.gitconfig 并添加

[merge]
    tool = meld

现在安装 meld diff 工具(例如在 Ubuntu 上,您只需执行sudo aptitude install meld

你会得到一个像这样的窗口

融合截图

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

中间是合并后您想要的状态。从两边选择并挑选所有位并将它们放在中间后,保存(CTRL + S)并退出融合。Git 现在将告诉您必须合并的下一个文件,并且您将执行相同的操作,直到完成合并。

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

还要运行您的代码以确保它按您的意愿工作。

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

于 2013-03-06T18:37:24.483 回答
1

为什么要拉入当前分支?听起来很麻烦。

要不你弄个最新的master,然后对比一下区别?这样你就不会在不知道你进入什么的情况下合并。

在这种情况下:

# in your master branch do
git pull origin master

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

git checkout your_branch_name

现在您在新分支中,您可以看到差异(绿色是您添加的内容,假设颜色也已打开)

git diff master

当然,您可以在不进行结帐的情况下看到与 master 的差异。所以在这种情况下,你拉原点主人,然后做一个差异:

# in master
git pull origin master

# now do a diff while still in master
git diff your_new_feature_branch
于 2013-03-06T18:40:40.257 回答
0

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

rebase 的优点:保持提交历史“更干净”,因为“master”的当前负责人将是您当前分支的祖先。有时人们不喜欢把共同的祖先埋得太深。有些地方的政策是在提交之前始终将功能分支重新定位到 master 上。

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

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

于 2013-03-06T19:01:46.490 回答