视频教程观看地址:http://study.163.com/course/courseMain.htm?courseId=1003674052
假设在合并我们的pull request到主分支之前,我们想要对add-readme分支添加额外的修改。这真的很简单。我们需要做的是在我们的文本编辑器中对文件进行所需的更改,然后提交更改,并再push回add-readme分支就可以了。
然而,在这节课,我们将通过在GitHub网站上以及在我们的本地副本上提交更改来故意创建冲突。当你刚开始使用Git和GitHub时,我的建议是不要在网站上文件进行任何编辑。而是,在本地计算机中执行所有工作,这样将帮助您有效的避免冲突。
如果你只是从本地计算机上push更改而且这个项目就你一个人维护的话,那么你将永远与远程代码仓库同步。
但是,如果您开始在一个团队中和他人协作,他们可能在你工作时,向远程分支push一个更改,而且这个更改和你正在本地做的更改是同一个文件,那么,就会导致冲突。
这是一个相当普遍的问题,它并不意味着世界末日,但是它是很可怕的,所以让我们练习创建和修复合并冲突。
所以,回到我的代码视图,这里,切换到到add-readme分支。
图 2-49
假如说现在,我想添加一个表情到我的README文件。
我将点击README.md文件,然后点击这里的编辑按钮。
图 2-50
图 2-51
在里面修改这个文件:
图 2-52
然后预览这次修改:
图 2-53
看起来不错。
所以这里我将添加一个提交更改的说明:
“更新README.md,添加表情”。
图 2-54
这里还可以添加一个可选的扩展描述,然后我单击commit changes来直接提交对add-readme分支的更改。
现在,来到打开本地的readme文件:
图 2-55
通常情况下,如果我们对远程代码仓库有任何更改,我们将会使用命令git pull来获取远程更改。这样可以保持同步,总之,一定要在你push之前pull。
但是,假如这里,我忘记了我在远程存储库上进行了更改,并且我还继续在这里为我的README添加一些信息。然后保存。
图 2-56
所以在控制台中,我将运行git branch。让我们确保我在正确的分支。
图 2-57
我还在add-readme分支,很好。
所以现在,我将添加和提交我的更改。
git add.
git commit –m “add profile”
还是一样,接着git push origin add-readme。
图 2-58
出现了这个情况,这是怎么回事?
这里提示说:push失败,更新被拒绝,因为您远程所做的工作没有包含在本地,这通常是由另一个代码仓库推送到同一个引用引起的:
好吧,这是对的,我并没有在push之前pull,对吧?
所以现在我键入git pull origin add-readme。
然后,我得到一个新的错误消息。
图 2-59
CONFLICT:README.md文件的合并冲突。自动合并失败;修复冲突,然后提交结果。
好吧,所以这里我们可以重新打开README.md。
图 2-60
我们可以看到这里有一堆东西。
它看起来有点可怕,但我们会通过它。
好吧,我们可以看到有很多错误和冲突标记,它显示我们在哪里发生冲突。
在中间,有一系列等号来分隔两个版本。
在顶部,是我在本地计算机上的最近的提交,在等号下面是我在GitHub上所做的改变。
这里,我需要选择保留哪些内容。这里,我想保留表情的那部分,
所以我只需要删除“自由自在学知识,就用虚幻账号”,和所有这些冲突标记,并保存。
图 2-61
然后回到我们的控制台,
我们将做一个git status。
没毛病,接着,会做一个git add . 。
git commit –m”解决合并冲突”,
我会去git push origin add-readme。
现在我们回到远程代码仓库。来到Pull request标签下。
图 2-62
点击进去,你可以在这里看到我的提交历史,更新README.md文件添加
此外,如果我们切换到提交视图,我们可以看到文件提交的历史。
现在我已经添加了我们的额外的评论,而且修复了提交冲突,
那么,现在让我们回到会话视图,点击Merge pull request并确认合并。
点击确认合并。
这里提示:pull request成功合并,并且关闭。
图 2-63
那么恭喜。您已完成第一次提出请求。
由于我们不再使用add-readme分支,我们可以在这里删除分支。
如果我们重新访问问题页面,我们看到add-readme问题现在已关闭。
这是因为我们在我们的请求正文中包含了fixed 1#,当pull request被合并时,GitHub负责关闭这个问题。
如果我们转到我们的个人资料,我们将在我们的贡献图表上看到一个绿色方块。
最后,让我们快速回顾一下我们做了什么。在我们打开一个pull request后,我们对GitHub网站上的代码仓库进行了更改。由于我们忘了在push之前pull,而且我们对本地计算机上的同一个文件进行了更改,所以就创建了一个冲突。最后,我们是通过在文本编辑器中,删除了我们不想保留的内容,然后提交并推送到GitHub上的远程代码仓库来解决这个冲突的。
在下一阶段,我们将展示如何使用这些功能在团队中进行协作。
更多精彩内容尽在视频中!
本文固定链接:http://www.oxox.work/web/github/conflict/ | 虚幻大学查看原文:http://www.oxox.work/web/github/conflict/