GitHub flow
不在主仓库上开发,fork到自己workspace下。
1.Fork(将主仓库fork到自己的workspace)
2.Create a branch(新建一个分支)
3.Add commits(推送到自己的仓库)
4.Open a Merge Request(向主仓库发出提交申请)
5.Code review(检查提交代码是否有误)
6.Merge(合并)
7.Deploy(部署)
流程详解
添加ssh公钥
为了代码和仓库的安全,我们通常使用ssh方式对待吗仓库进行操作
Fork
首先项目组成员需要对主仓库进行fork操作,就是将主仓库copy一下到自己的仓库
Clone
将自己的远端仓库下载到本地的操作,一般来说仓库会有两个分支,一个develop/dev,另外一个就是master,我们一般都在develop上面进行开发,所以选择develop分支进行clone
在你自己的电脑上,选择好你的Workspace工作区间(项目目录),右键Git Bash here打开git命令窗口(前提是你安装过git)。
输入:
git clone ssh://你的地址
添加远程仓库
首先我们需要把远程主仓库添加进来,方便以后push和pull
git remote-v
查看现有的仓库
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch)
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push)
项目开始一般只有两个两个远程仓库的地址,一个用来fetch,一个用来push,并且这两个都是一样的,都是自己的远程源仓库origin,我们需要的就是将项目组长所建立的主仓库添加进来
git remote add upstream ssh://主仓库地址
(upstream 只是远程仓库的代称,可随意命名)
$ git remote -v
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #自己的
origin ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #自己的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (fetch) #项目组长的
upstream ssh://git@gitlab.xxx.cn:8022/aaa/xxx.git (push) #项目组长的
查看分支和状态
之后的操作就是每天都要重复的了
我们输入git branch
可以查看当前工作区存在的分支
我们可以通过输入git branch查看当前工作区间存在的分支:(如下我只有develop一个分支,*代表当前所在的分支,一般情况下刚clone下来就一个develop分支)
通过
git branch -a
查看本地和远程的全部分支
输入git status
来查看当前分支和分支状态
On branch develop
Your branch is up to date with 'origin/develop'.
nothing to commit, working tree clean
这个也会显示咱们所处的分支,已经该分支状态,目前就是告诉咱们分支已经是最新的了,没有什么要提交的。以上几个基础命令都是用的比较多的,要熟练掌握
新建工作
我们在开始敲代码之前,不要再develop分支上直接开敲,先打开git bash,拉一下主仓库保证代码最新,之后先新建一个分支,
git checkout -b 分支名称
新建完成后就会自动切换到新建的分支上去
我们可以通过git checkout 分支名称
切换分支
stash
开发功能结束,或者一天工作结束了,想要提交代码、
由于是合作开发,主仓库的更新速度是比你的快的,也就是说主仓库的代码是新的所以你要先pull一下主仓库的代码。但是直接pull可能会代码许多冲突所以在此之前你需要提交或者将你的代码放到缓存区里面保管:
git stash save “保存信息”
然后直接pull
git stash pull 远端名字 分支名字
这样就避免了冲突,要注意的是暂存区是一个栈,后放入的东西排在前面
git stash list #查看stash了哪些存储
git stash show #显示做了哪些改动
git stash apply #将某个暂存取出,git stash apply stash@{$num}
git stash drop stash@{$num} #丢弃stash@{$num}存储,从列表中删除这个存储
git stash clear #删除所有缓存的stash
一般使用
git stash pop
相当于从栈顶弹出一个缓存然后合并,这样的话可以删除栈顶元素并且取出来
commit&push
接下来就是将代码提交到本地仓库,首先查看代码状态
git diff查看修改部分(按下q退出)
选择提交文件 git add . 添加所有
提交git commit -m “信息”
Commit Message 每次提交,commit message 应该清晰明了,说明本次提交的改动和目的,禁止使用无意义的乱码或单个词语。
示例:
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
Style: 格式(不影响代码运行的变动)
Refactor:重构(即不是新增功能,也不是修改bug的代码变动)
Test:增加测试
Chore:构建过程或辅助工具的变动
禁止使用 git push -f 。还要根据自己的项目内容合理配置好.gitignore文件(忽略上传某些文件),这个大家可以再去查阅相关资料。
commit完成之后就可以push到自己的远程仓库了,
git push origin HEAD:分支名称
这里的HEAD指当前分支,冒号后面指要push的分支,如果远程仓库没有,会自动在远程仓库创建该分支。(虽然HEAD:分支名称可以省掉,用默认的,但还是建议加上
提交PR
code review
END
在分支合并请求通过后,你这次的任务就算是完成了,你可以将本地的刚新建的工作分支合并到develop分支上,再删除该分支,例如这次工作新建的分支为check:
git checkout develop #切换到develop分支
git merge check # 将check分支合并到当前分支
git branch -d check #删除check分支