git环境和工具
git环境下载: https://gitforwindows.org/
windows最好用的工具TortoiseGit下载: https://tortoisegit.org/download/
git工作流图解
克隆远程项目至本地仓库
找到gitlab上,项目对应的git地址:
将git仓库clone至本地:
- 输入git地址
- 选定本地文件夹
- 点击确定
- 输入git账号密码
提交
本地提交:
右键 -> git commit
- 输入提交信息
- 选中提交文件
- 勾选操作选项(图中commit按钮)。
强烈建议选commit,不要选commit and push.
push 是影响远端服务器的操作,谨慎操作 !!!
冲突解决
当两个代码块之间,有相同的修改。就会产生冲突。
冲突一般都是在pull或者merge request的时候产生的。
以下演示一个pull发生冲突的事例.
本地修改了README.md文件,pull
提示文件有merge,没有办法拉取到本地工作区
这个时候需要将本地代码 commit或者stash(清空工作区)才能pull,合并代码
提交到本地之后,pull会提示代码有merge
打开文件,将冲突解决。
- 蓝色线条标记为, 远程仓库的文件内容
- 红色线条标记为,本地提交的文件内容
如果冲突比较复杂,建议拉小伙伴商量一下,要哪一行代码
解决之后,再点击git commit.
对之前冲突的文件右键-> resolved
文件会变为正常待提交状态。
再次commit即可。
推送修改至远端仓库
由于tortoise的UI排布问题。很难显性的看出一次push会推送多少个commit至远端
推荐先看一下版本树,右键-> Show log
如图所示, 每一个 commit会形成一个提交记录。
- develop代表本地的develop分支
- origin/develop代表远程仓库的develop 分支
本地的develop节点,领先了远程的develop分支一个提交。
push本地的develop提交记录,至远端develop
查看版本树:
创建分支
点击右键 -> create Branch
Name - Branch 代表新建分支的名称
Base On 代表基于分支创建当前分支
- head 代表当前活跃分支的游标
- branch 代表对应的分支
-
Tag 代表分支上某次被标识的提交(比如 develop分支上某次历史提交)
正式创建分支
将创建的本地分支推送至远端
右键->push
切换分支
右键-> swich/check out
切换至develop_test分支
如果本地工作区有代码尚未提交,需要commit或者stash。
清空工作区, 才能切换分支
分支合并
git分支合并有merge和rebase。这里只介绍merge方法.
rebase用的比较少,风险大(当然收益也大)。
rebase详细讲解请看://www.greatytc.com/p/f23f72251abc
补充:有同一祖先的分支,才能合并
将develop_test合并入develop分支
准备条件:
- develop_test有几个独立的提交记录,并且已经提交至远端
- 本地工作区切换至develop
右键-> merge
从远端的develop_test分支,合并入当前分支(develop)
如果两个分支有冲突,合并过来的代码会出现在提交列表中等待解决冲突。
解决冲突后,正常commit然后push即可
show log 看版本树,会看到develop_test上有一条线连入了develop分支
如果要同步develop上的更改至develop_test。
切换至develop_test分支,再从develop merge合并即可
git推荐正确的使用流程
在分支合并的阶段,不在本地merge,而是发merge request
merge request
在项目主页,进入merge request
点击 new merge request
- 红色笔标识项目
- 蓝色笔标识分支
从source branch 合并至 target branch
配置选项,选择负责merge request的人
合并之后,删除source branch
等待审核人完成此次merge request即可
最后
git要精通需要看懂其工作原理,多做实验。
push 和 merge request 需要谨慎,本地炸了,大不了删库,远程炸了只能跑路。。。
推荐:
超级全的git详解: http://www.cnblogs.com/best/p/7474442.html#_lab2_2_1