GitHub 上咱们能够 fork 他人的我的项目,为了与他人产生一种协作关系,将别人的我的项目在本人本地创立也一个,这里以霍格沃兹测试学院(Hogwarts)的演练环境做演示:

1.1) 点击fork按钮对我的项目进行fork:

1.2)fork实现后就能够在咱们本人的GitHub账户下见到被fork的我的项目:

2.1)接着咱们应用git clone命令将fork的我的项目clone到本地:

这个时候能够将此我的项目看做是本人的一个我的项目,能够任意批改;

2.2)我的项目的作者能够看到有哪些人fork了本人的我的项目:

3.1) 先在本地批改README.md文件为:

Hogwarts_Online2 霍格沃兹测试学院定向班第二期演练 try it

3.2)将文件提交到本地仓库:


编辑

这个时候能够看到提交的作者曾经变成咱们本人了;也能够应用git remote -v命令来查看,可见当初本地仓库与近程仓库间接关联的是fork之后的我的项目:


编辑

3.3)只用git push命令将本地仓库的文件推到近程仓库中去:


编辑

如下图能够看到曾经胜利将批改后的README.md文件推到了GitHub上:

pr:全称 pull request,当咱们批改了 fork 后的我的项目后,因为不能间接批改他人的我的项目,这个时候想要将本人的批改与原我的项目合并,就能够应用 pr 来向原我的项目作者进行申请

4.1)发动 pr,点击 New pull request:

而后咱们能够看到仓库门路从我的仓库向原作者我的项目仓库地址发动 pr 申请,在上面能够看到我对我的项目的批改 diff:

4.2)这个时候咱们点击Create new pull request按钮,填写形容后再点击Create new pull request按钮:


编辑


编辑

这个时候原仓库保护人员就能够收到pr,并对其进行审核、评论、merge或close的操作:


编辑

5.1) 在文件批改没有抵触(conflict)的时候,能够间接merge:

5.2) 当文件批改有抵触的时候,就须要原作者去进行RResolve了:

5.3) 或者有抵触的pr间接close:总结下来有以下三种状况:

无抵触间接merge有抵触手工merge有抵触close并从新发动pr有时候咱们fork了我的项目,然而很有可能咱们对我的项目的批改会比原我的项目滞后,这就会导致pr的时候容易呈现conflict;为了能让咱们晓得以后的批改是否conflict,就须要应用git fetch命令了;应用 git fetch 拿下来一个近程分支的文件,看一下这个分支和我本人的有什么抵触。7.1)先应用git remote -v命令来查看本地仓库与近程仓库的关联关系


编辑

这个时候咱们能够减少一个remote,抉择原仓库的HTTPS地址,应用git remote add <远端名> <远端地址>命令来增加一个remote:


编辑

7.2)再将近程端的master分支fetch到本地:


编辑

7.3) 这时候应用git merge将以后master分支与远端分支合并:


编辑

后果中咱们发现产生了抵触,再应用git status命令查看:


编辑

发现两边都批改了README.md,这个时候咱们应用vi对README.md进行查看,当咱们merge的时候,零碎会把文件换成以下的展现模式:


编辑

这种展现模式的意思是以等号=为分隔符,等号上方为以后分支的批改,等号下方为近程分支的批改,这样就产生的抵触,咱们能够手动进行批改,而后merge:


编辑


编辑


编辑

7.4) 这个时候刷新GitHub,在咱们本人的分支仓库中能够看到曾经胜利将批改进行merge:

这个时候如果再进行pr的话,遇见conflict的几率就会小的多了命令简略总结:

git remote add other xxxx git fetch other master git merge remotes/other/maste


编辑

8.1)将我的项目用IDEA关上,在Version Control → log中能够看到咱们的提交治理线:


编辑

8.2)双击文件能够查看文件diff:


编辑

8.3)在右下角还能够进行Git分支的治理: