Git学习总结html
最近由于在使用Git的过程当中老是会遇到须要合并分支或者解决冲突的状况,并且使用可视化工具的时候老是会有些不直观。因此花了一些时间研究了一下Git的使用。git
详细的问题请上Git的官网看文档吧https://git-scm.com/book/zh/v2,真心写的很棒。我这里只是记录一下我的对Git的感觉以及本身一些经常使用命令。github
首先须要了解的是Git中的三个工做区域(Git仓库、工做目录、暂存区域)。工具
a) Git仓库。咱们须要区分的是远程仓库和本地仓库。他们通常都是不一样的。咱们经常使用了git pull、git push、git fetch其实都是在远程仓库和本地仓库之间进行同步。学习
git pull至关于git fetch和git merge的和。测试
b) 工做目录。这里其实就是指你进行了修改可是尚未git add的文件。fetch
c) 暂存区域。他的意思实际上是当你下一次提交(git commit)的时候会提交暂存区域内的修改到本地仓库。经过git add将修改添加到暂存区域中来。spa
如今再来针对单个文件,文件有三种状态。已修改(modified)、已暂存(staged)、提交(commited)。分别对应上述的操做。还有已跟踪和未跟踪,这个关系不大。htm
接下来进入正题。Git之因此很快流行起来的缘由,很大程度上是由于它可以很方便的合并分支。若是对Git中的分支开发工做流不清楚的,强烈建议去看一下https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81。这里假设你已经建立了与远程仓库分支对应的跟踪分支。开发
合并分支:例如我要将A分支合并到B分支看成
1. 切换到B分支下。git checkout B
2. 更新当前分支。git fetch。有时候会须要加上<name> <branch>
3. 若是有冲突的话合并冲突(这个以后在讲)。git merge
4. 合并分支。git merge A。
5. 若是有冲突的话再解决冲突。
冲突其实能够稍微的分为两种。一种是Git能够自动帮咱们搞定的冲突,好比说虽然是在同一个文件,可是不是在同一个位置的修改。还有一种是须要咱们本身判断解决的冲突。
第一种:
咱们在git merge的以后,会碰到出现给文件命名的状况。以前 一直不理解,其实这里是说这个解决的冲突重新commit的说明。
第二种:
Note:git add的时候并不会去判断你到底有没有去解决,也就是说哪怕你什么都没干,直接git add 也是能够的,若是你不想被同事打的话。
2018/07/03:
补上团队协做的部分。
其实内容在git的官方文档里面都有。
通常来讲咱们协做的话能够简单的分为两种模式。
一是:做为开发者对dev分支都有写权限,当你完成工做以后直接解决冲突推送到远程仓库。这种方式感受比较适合参与人数比较少的项目,或者说没有那么多代码管理的项目,每一个人对本身的代码负责。
二是:dev分支是被保护的,除了管理员以外其余人只有读的权限(通常开源项目也是这个样子)。这个时候若是你要参与开发,贡献本身的代码,你须要先fork项目到本身的仓库。这个时候你能够将你的代码推送到本身的远端仓库,而后发出一个pull request请求管理员来拉你的分支。若是能够自动合并的话是能够在网页上合并。
不过通常的流程是管理员pull到本地,测试、审视以后再递交到远端仓库。这种方式可能比较适合对产品有较高要求,团队比较完善的公司。