如何将master拉入我正在处理的当前分支,并查看冲突?
另外,我应该合并或改组,不确定两者中哪一个是正确的。
答案 0 :(得分:2)
首先从远程拉出所有分支
git pull origin
执行此操作后,所有分支都将被拉出(包括主分支)。
现在您要将master合并到当前分支中,以便执行以下操作:
git merge master
如果它自动解决了任何冲突,那么您已完成。
如果它没有自动合并更改,那么您需要解决冲突。
要解决冲突,请编辑〜/ .gitconfig并添加
[merge]
tool = meld
现在安装meld diff工具(例如你在Ubuntu上做sudo aptitude install meld
你会得到一个这样的窗口
在左侧,您将拥有本地版本。在右侧,您将拥有远程版本。
中间是合并后的理想状态。选择并从两侧选取所有位并将它们放在中间后,保存(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分支因此不是其他分支的基础。