Github团队协作教程(Gitkraken版)
转载非原创,侵立删
一、前期工作
1. 在 Github 上创建 organization
step1. 登录Github网站,点击右上角头像,选择 “Settings” :
![](https://img.haomeiwen.com/i1159344/b391edfb2e257975.png)
step2. 选择 “Organizations” ,点击右上角 “New organization”
![](https://img.haomeiwen.com/i1159344/0d863da02802360c.png)
2. 邀请队友加入 organization 并创建 team
step1. 进入组织,点击 “People” -> “invite member” 邀请队友加入:
![](https://img.haomeiwen.com/i1159344/a06ac6fd36d0d989.png)
成功加入后,在 Github 个人主页的头像下方能看到自己加入的组织:
![](https://img.haomeiwen.com/i1159344/962e9ea205758e10.png)
step2. 进入组织,点击 “Teams” -> “new team” 创建团队,然后将已加入组织的队友添加进去:
![](https://img.haomeiwen.com/i1159344/19d18cf2a4ee5d76.png)
3. 建立团队项目仓库,在设置中将 team 的权限设置为 read
step1. 进入组织,点击 “Repositories” -> “New” 新建团队项目仓库:
![](https://img.haomeiwen.com/i1159344/5ab95b3e8d1076a6.png)
step2. 点击进入刚创建的仓库,选择 “Settings” -> “Collaborators & teams”,选择刚建的 team,将权限设置为 read:
![](https://img.haomeiwen.com/i1159344/0a50d23e76941d0c.png)
4. 创建开发分支,让队友 fork 到个人仓库
step1. 在输入框 “Find or create a branch...” 处键入dev,创建开发分支。
![](https://img.haomeiwen.com/i1159344/b68cac6fd42d971f.png)
step2. fork 到个人仓库
![](https://img.haomeiwen.com/i1159344/e85dbdfa65a6ce84.png)
成功后在个人仓库中能看到如下 fork 信息:
![](https://img.haomeiwen.com/i1159344/b0191a46b0b68bcb.png)
二、正式使用流程(Gitkraken)
1. clone 项目到本地
点击菜单栏 “File” -> “Clone Repo”, 选择本地路径、输入自己的远程仓库 URL (如:https://github.com/thousfeet/Test
),clone 完成后点击 “Open Now” 。此时左侧的 “REMOTE” 下方的 “origin” 会显示你的远程仓库信息。
操作动图:
![](https://img.haomeiwen.com/i1159344/1e576a3415989bbf.gif)
2. 添加 REMOTE 关联到团队远程仓库
点击 “REMOTE” 右侧 “+” 号,添加团队项目仓库。此时 “REMOTE” 下会多出团队远程仓库信息。
操作动图:
![](https://img.haomeiwen.com/i1159344/45b37abcbdbd7211.gif)
3. 切换到 dev 分支
到这步,在本地仓库(左上方 LOCAL )仍只能看到 master 分支。因此在 “origin” 下的 “dev” 处点击右键 -> “check out origin/dev”,将远程的 dev 分支同步下来。
操作动图:
![](https://img.haomeiwen.com/i1159344/11423784989f54d4.gif)
完成这一步之后终于可以愉快地打开本地仓库项目开始写代码辣。
4. 提交commit到自己的远程仓库
首先明确:
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区(stage);
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。image
(摘自廖雪峰 Git 教程)
当你修改本地仓库的文件时,Gitkraken 会自动检测到变更,并在右上角显示 “xx file changes on dev” 。点击 “Stage all changes”,将文件修改添加到暂存区,然后在最右下方的 “Commit message” 中写下 commit 信息,提交到自己的远程仓库。
操作动图:
![](https://img.haomeiwen.com/i1159344/bd68bd79c28bf41b.gif)
5. 和团队远程保存同步
当你在本地修改了项目的同时,其他队友或许已在此期间给团队的仓库提交了新的代码。因此在完成了一系列 commit 将要 push 到远程之前,先要同步到与团队一致的版本,避免在 pull request 时产生冲突。
为此我们要做两件事:更新远程仓库的代码到本地仓库(fetch),然后将内容合并到当前分支(merge)。(在合并的时候可能会出现冲突,冲突的解决方式将会在后续说明。)
在Gitkraken的操作是:在 “REMOTE” 中的团队远程仓库上单击右键 -> Fetch xxx,然后在团队远程仓库的 dev 分支上单击右键 -> Merge xxx/dev to dev 。
此时可以看到中间的树状分支图上出现了 merge 信息。
操作动图:
![](https://img.haomeiwen.com/i1159344/e92f0c555f57e7a1.gif)
6. push 到自己的远程仓库 & 请求 pull request 到团队远程
点击最上方的 push 按钮将之前的一系列 commit 信息推到自己的远程仓库,然后在团队远程仓库的 dev 上右键 -> “Start a pull request to xxx/dev from origin/dev”,输入 pull request 信息(如果只有一条 commit,则会自动填充上 commit 信息),然后点击提交。此时可在右上角的弹窗单击 “View on github”,在浏览器中查看此次 pull request 。
操作动图:
![](https://img.haomeiwen.com/i1159344/2dceb44ec74cf361.gif)
使用 Gitkraken 进行其他 Git 操作:教程入口
包括内容:
- 查看某次 commit 的文件改动
- 修改 commit 信息
- 合并多次 commit 信息
- 回到旧版本 commit 记录并 push 到远程仓库
- 解决 merge 到本地时的冲突
使用Gitkraken进行其他Git操作
查看某次 commit 的文件改动
使用 Gitkraken 能非常方便的看到任意一次的 commit 对项目文件的改动。
具体操作是:在树状分支图上单击某个 commit 记录,在右侧会显示出此次 commit 信息、文件的改动情况(分为红、绿、黄三种标志,分别代表删除文件、添加文件、修改文件)。
![](https://img.haomeiwen.com/i1159344/9631a9cf8d9f493a.jpg)
当单击某个改动的文件时,会展示出具体的变更情况,可选择 “Diff View” 视图查看与上一次 commit 的差别,或 “File View” 视图查看完整文件。
![](https://img.haomeiwen.com/i1159344/d6981b99d834a256.jpg)
修改 commit 信息
当一不小心手抖误写和提交了一个 commit 信息之后,可以在树状分支图中选中此 commit 记录(必须是最新一 次commit ,旧的 commit 信息不允许修改),点击右侧上方的 commit 信息进行修改,然后点击下方 “Update Message” 提交修改。
操作动图:
![](https://img.haomeiwen.com/i1159344/59b210a839b5b14c.gif)
合并多次 commit 信息
当从团队项目分支 Merge 到本地时, Git 会自动产生一条形如 “Merge remote-tracking branch 'upstream/dev' into dev ” 的 commit 信息,提交到团队项目上去就会有一大堆这种 merge 信息混杂在有用的 commit 记录里。这时候就可以用合并 commit 信息得以解决。
在Gitkraken中的具体操作是:在树状分支图的某个 commit 记录上右键,选择 “Reset dev to this commit” -> “Soft - keep all changes”。成功后,所有新于此条 commit 的信息都会被抹去,但文件的修改还保留着。
操作动图:
![](https://img.haomeiwen.com/i1159344/b9a4a6e3e4e7b6a1.gif)
回到旧版本 commit 记录并 push 到远程仓库
当一不小心把某个代码改崩了且已经传到了远程仓库,想要回退到旧版本的某次 commit 记录并将此次旧记录 push 到远程时,可以做如下操作得以解决:
在树状分支图的某个 commit 记录上右键,选择 “Reset dev to this commit” -> “Hard - discard all changes”。成功后,所有新于此条 commit 的操作都会被抹去,包括对文件的修改。然后点击上方菜单栏的 push 推到远程仓库,但由于 head 指针滞后,选择 Force 强制把远程项目更为旧版本。
操作动图:
![](https://img.haomeiwen.com/i1159344/b62501abf8656ce7.gif)
* 解决 merge 到本地时的冲突
当你在本地修改了代码文件时,队友可能修改了同一份代码,这时候从团队项目分支 merge 到本地时,就可能会产生冲突。此时当在团队远程分支右键点击 merge 时,Gitkraken会检测出 conflict ,这时候只要选择 “View conflict file” 就可以打开冲突文件的 diff 视图,通过勾选方框选择保留冲突部分的哪个版本,确定后就可以得到最下方的 Output 示意的最终合并后的文件。
![](https://img.haomeiwen.com/i1159344/9411ccdb4f9b73de.jpg)
(但队友反映不如直接在文件中去删冲突标识符更好用,所以打星不做推荐)