本篇文章讲解了Git的一些基本的团队协作命令,和GitFlow工作流指南
git 团队协作的一些命令
1.开分支
git branch 新分支名 例如,在master分支下,新开一个开发分支: git branch dev
2.切换到新分支
git checkout 分支名 例如,在master分支下,切换到新开的dev: git checkout dev
3.开分支和切换分支合并到一个命令
git checkout -b 新分支名 例如,新开一个开发分支,并立即切换到该分支: git checkout -b dev
4.切换回原分支
git checkout 原分支名 例如,切换回master git checkout master 注意:当前分支有修改,还未commit的时候,会切换失败,应当先commit,但可以不用push
5.合并分支
git merge 需要合并的分支名 例如,刚刚已经切换回master,现在需要合并dev的内容: git merge dev 建议在GitLab(或者其他git系统)上面创建merge request的形式来进行分支的合并和代码审核。
6.查看本地分支列表
git branch -a 前面带remotes/origin 的,是远程分支
7.查看远程分支列表
git branch -r
8.向远程提交本地新开的分支
git push origin 新分支名 例如,刚刚在master下新开的dev分支: git push origin dev
9.删除远程分支
git push origin :远程分支名 例如,删除刚刚提交到远程的dev分支: git push origin :dev
10.删除本地分支
git branch 分支名称 -d 例如,在master分支下,删除新开的dev分支: git branch dev -d 注意:如果dev的更改,push到远程,在GitLab(或者其他git系统)上面进行了merge操作,但是本地master没有pull最新的代码,会删除不成功,可以先git pull origin master,或者强制删除 git branch dev -D
11.更新分支列表信息
git fetch -p
12.TortoiseGit(乌龟git)
不可否认,在windows下,这个是个不错的工具。不管你是命令行新手还是重度使用者,我觉得都可以尝试一下。 Git工作流指南:Gitflow工作流在你开始阅读之前,请记住:流程应被视作为指导方针,而非“铁律”。我们只是想告诉你可能的做法。因此,如果有必要的话,你可以组合使用不同的流程
Gitflow工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。
Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。除了使用功能分支,在做准备、维护和记录发布也使用各自的分支。当然你可以用上功能分支工作流所有的好处:Pull Requests、隔离实验性开发和更高效的协作。
工作方式Gitflow工作流仍然用中央仓库作为所有开发者的交互中心。和其它的工作流一样,开发者在本地工作并push分支到要中央仓库中。
历史分支相对使用仅有的一个master分支,Gitflow工作流使用2个分支来记录项目的历史。master分支存储了正式发布的历史,而develop分支作为功能的集成分支。这样也方便master分支上的所有提交分配一个版本号。
剩下要说明的问题围绕着这2个分支的区别展开。
功能分支每个新功能位于一个自己的分支,这样可以push到中央仓库以备份和协作。但功能分支不是从master分支上拉出新分支,而是使用develop分支作为父分支。当新功能完成时,合并回develop分支。新功能提交应该从不直接与master分支交互。
注意,从各种含义和目的上来看,功能分支加上develop分支就是功能分支工作流的用法。但Gitflow工作流没有在这里止步。
发布分支一旦develop分支上有了做一次发布(或者说快到了既定的发布日)的足够功能,就从develop分支上fork一个发布分支。新建的分支用于开始发布循环,所以从这个时间点开始之后新的功能不能再加到这个分支上 —— 这个分支只应该做Bug修复、文档生成和其它面向发布任务。一旦对外发布的工作都完成了,发布分支合并到master分支并分配一个版本号打好Tag。另外,这些从新建发布分支以来的做的修改要合并回develop分支。