这学期使用github提交了很多次作业,对于git以及github的使用算是比较熟悉了,所以在这里记录并分享一下使用git在github进行操作的一些基本指令,以及图文结合的说明一下如何在github上使用organization进行团队合作。
git 基础操作
常用指令
git 有很多不同指令,被称为基础操作的也有很多,但实际上最常用的只有五个。
-
第一步,从GitHub上下载项目代码
git clone </path/to/repository>
-
第二步,将工作区的代码提交到暂存区
在本地项目所处的位置右键打开git bash
输入下面的指令,将工作区的代码提交到暂存区git add <filename> #只将目标文件添加到暂存区 git add . #将全部修改添加到暂存区
-
第三步,将暂存区的代码提交到仓库区
git commit -m "修改信息"
-
第四步,将仓库区的内容提交到远程仓库上
git push origin <branch>
-
更新本地代码
git pull
这个指令的意思是在当前的工作目录中(我们后面还可能建分支)获取并合并远端的改动。有时候我们不是完全在本地进行操作,而是在远端的github上也进行了一定的修改,比如增加了一个README文件。此时我们的本地文件因为和远程仓库的版本不匹配,所以直接执行第四步push会有报错(版本过期),所以这时候我们需要首先拉取远程的最新项目,然后再修改提交本地文件。
分支相关指令
分支是用来将特性开发绝缘开来的。在我们创建仓库的时候,master是默认的分支,使用git bash的时候可以看到后面跟着(master)标识,当我们转换分支时该标识会变成当前分支的名称。一般来说自己独立开发项目时只用master就足够了,分支主要是用于多人协作开发时的项目管理。
-
创建分支
进入项目根目录下后,执行下面的指令新建一个分支(复制当前分支,默认为master),括号内是新分支的名字。git checkout -b <branch>
-
合并分支
这条指令会合并其他分支到当前分支git merge <branch>
-
将分支推送到远程仓库
该指令和修改本地代码后推送到远程仓库是一样的,是将新建的分支内容更新到github上面。除非我们将分支成功推送到远程仓库端,否则该仓库不被团队中他人可见。git push origin <branch>
-
拉取master分支内容到本地
git pull
-
切换分支
git checkout <branch>
-
删掉分支
git branch -d <branch>
其他指令
-
在本地新建一个空仓库
首先创建一个文件夹作为本地的仓库,然后进入文件夹,执行下面的指令即可git init
-
将本地仓库连接到某个远程服务器
git remote add origin <server>
-
查看仓库状态
该指令意义为检索本地仓库的文件更新状态,显示的内容包括:- 已修改的,未暂存的文件名称
- 已暂存,为提交的文件名称
- 未追踪到的文件
git push origin <branch>
-
查看变更日志
该指令可以让我们查看提交的 commit historygit log
github 进行多人协作
之前使用github时我大部分时间都是将他作为仓库或者提交作业的平台来用的,但是实际上github的一个非常重要的特点就是可以团队协作。本学期的服务计算课程中也有一次在github上团队合作完成的作业,但是我们几个对于github上的团队合作操作都不是很熟悉,乱建分支,提交代码的时候全都合并到master上,最后都不清楚项目究竟改到了第几版。因此我在这里分享一下github上团队合作的流程。
-
第一步,发起者在github上建立一个组织 organization
发起者首先登录自己的账号,点击右上角的“+”号,然后选择 “New organization”
-
第二步,按照提示的流程完善新创建的组织的信息
成功后网页会自动跳转到已创建的组织,如下图
-
第三步,添加团队成员
进入组织,点击下图中黄框圈起来的 “People” ,然后跳转到“invite member"页面
点击页面右上角的”invite member"
现在可以根据被邀请人的名称或者是电子邮箱来查询并邀请
之后被邀请者会收到一封邮件,在邮箱中同意即可加入组织啦
-
第四步,在组织中建立新的项目仓库
首先组织开发者要回到之前的“Repositories”页面,点击页面中部的新建仓库选项
按照一般的流程完善这个新仓库的信息
-
第五步,添加团队并设置开发权限
选中建好的仓库并进入,选择页面上方的"settings"进入设置栏
选中图中右侧的”collaborators&teams",进入合作者页面
选中“add a team"添加团队(没有的话要先选择create a team进行创建)
可以看到此时我们已经成功的加入了新建的test团队,此时默认的团队权限为read,可以根据需要进行修改
-
第六步,创建开发分支
回到仓库的code页面,点击branch按钮,新建开发分支”dev"。如果多人合作的话,可以给团队中的每个人都新建一个开发分支,这样会便于管理
-
第七步,在分支开发后合并新修改内容
当我们在分支完成开发后,可以通过github的pull request方式将分支上的内容合并到master。当然,第一步是要将本地的文件提交到github上属于我们的开发分支
比如我现在在开发分支上新建了一个update.md文件
下一步我想将修改保存在master上,于是点击页面上的new pull request,然后可以看到如下的页面
将页面向下拉,可以看到我们本次pull request 的修改内容
点击图中的“merge pull request" --> “confirm”,完成pull request操作
三种合并方式及特点
在pull request的时候我们可以看到图中有三种pull request的方式(如下图),下面就来讲一讲他们都有什么不同的作用
-
第一种,
Create a merge commit
.
这种是最完整的合并方式,以这种方式合并时不仅会保留所有的提交版本,还保留了所有的修改轨迹
-
第二种,
Squash and merge
如图所示,这种方式是最不完整的合并方式,既不保留历史版本,也不保留修改轨迹
-
第三种,
Rebase and merge
这种方式是前两者的中间值,它保留了提交版本,却不保留各版本的修改轨迹
一般来说我们会默认选择第一种合并,但是很明显,第一种合并方式会浪费较多的空间来储存我们的修改信息。所以当我们想要更简洁地更新我们的仓库、没有存储历史版本的需求、比如只是修改错别字、病句等不关键改动时,我们就可以选择第二种或第三种方式。