很久没有写博客了,来补一篇。
最近在工作中项目管理工具换成了Git,上一篇是SVN,那这篇就写Git吧。
首先以我所在公司所说,有测试分支develop/v2,发版分支release/发版时间,准生产分支dev,个人需求分支。
- 接到需求之后,先在远程仓库dev分支为基点建立个人需求分支,比如feature/import_dd
- 接下来在本地创建远程分支feature/import_dd分支的本地同名分支
git checkout -b 本地分支名 origin/远程分支名 //将会自动创建一个新的本地分支,并与指定的远程分支关联起来
3.在本地feature/import_dd上进行开发,开发自测后,提交需求代码:
git status //查看分支文件状态
执行过后可能会出现下面,这个问题:git未跟踪的目录
$ git status On branch feature/not_import_scm Your branch is up to date with 'origin/feature/not_import_scm'. Untracked files: (use "git add <file>..." to include in what will be committed) custer/cn.chinatowercom.crm.custmgr/eosdebug/
-------------------------------------------------------解决:-----------------------------------------------------------------
$ git clean -nfd //查看要删除的未跟踪目录 -nfd:查看要删除的未跟踪目录,-nf:查看要删除的未跟踪文件
Would remove custer/cn.chinatowercom.crm.custmgr/eosdebug/
$ git clean -fd //确定是要删除的未跟踪目录,执行删除 -fd:连目录都删除,-f:只删除文件
Removing custer/cn.chinatowercom.crm.custmgr/eosdebug/
$ git status //已经删除了
On branch feature/not_import_scm
Your branch is up to date with 'origin/feature/not_import_scm'.
nothing to commit, working tree clean
解决之后,执行下面命令:
git add 文件名 //添加指定文件到暂存区 git add . //添加所有修改过的文件到暂存区 我一般执行过 git status 看修改过的文件是否是我决定提交的需求,然后是,就执行这条命令 git commit -m "本次提交备注"
这一过程,可能想恢复到修改前的版本,可以这样操作:
git checkout -- 文件名 //把文件的修改全部撤销,就是让这个文件回到最近一次git commit或git add或修改前的状态
4.然后再将本地feature/import_dd提交到远程feature/import_dd,操作步骤:
/*git pull相当于git fetch、git merge操作
git fetch :把远程分支更新到本地镜像分支*/
git pull //拉取最新远程分支feature/import_dd的文件
/*git push 是简写,全写是:git push origin master 将本地版本库推送到远程服务器
origin是远程主机,master表示是远程服务器上的master分支和本地分支重名的简写,分支名是可以修改的*/
git push //提交本地分支feature/import_dd到远程feature/import_dd
此时,本地和远程的个人需求分支内容一致。
5.再将本地个人需求分支合并到测试分支develop/v2,操作步骤:
git checkout develop/v2 //切换到测试分支进行合并
git branch -a //查看所有分支
上个步骤可能会切换失败,失败原因是本地的分支信息和远程分支信息不一样,git pull 即可。
git merge feature/import_dd //本地需求分支文件不变,这是为了测试分支代码污染本地需求分支代码
这一步骤,最容易出现合并冲突问题。出现冲突文件,找到冲突文件,就是别人也修改了该文件,并且提交了
<<<<<<<<HEAD
develop/v2 的内容,即是别人修改的,
===========
feature/import_dd,是你修改的
>>>>>>>>feature/import_dd
如果别人修改的地方和自己的不影响,那你可以把你修改的,粘贴到=====上面的原修改位置,然后再把======下面的代码删除即可。
如果有影响,就要和这个人商量如何解决了!
在develop/v2分支修改过之后,操作:
git add .
git commit -m "本次提交备注"
git pull
git push
6.然后就可以通知测试人员,在测试分支测了。
7.测试通过之后,再把本地feature/import_dd往发版分支合并和push即可,和步骤5一样操作。
以上,是我在工作中常用的流程。