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 分支的治理: