从开始实习到如今大概有一个月了,这个月时间接触了不少新东西,其中就包括了git版本控制、分支管理等等。我在这段时间里,深深地感觉到了git对公司项目代码管理和控制、团队合做带来的益处和其重要性。其实在实习开始前就明白git对于一个合格的程序员来讲,是不可不掌握的,但因为以前学校团队人数较少,对于代码的管理没有作严格要求等等缘由,因而就没有好好学习git,到了公司实战真是后悔不已!(在学校的时候用qq发送代码文件这样的傻事情没有少作)前端
这几天认真看了廖雪峰老师的git教程,对之前一些模糊的概念有了更清晰的了解,以及对整个团队利用git进行项目开发、版本控制、分支管理等等都有了进一步的认知。这里要特别感谢大哥孜孜不倦的教诲我哈哈哈!git
在读书分享交流会中我了解到黄淇前辈的“恍然大悟合集”,那么但愿本身也能够以这样的方式去学习和整理总结在前端路上的一些“恍然大悟”知识点。因而,此次的技术感想便有了本身如下的“恍然大悟”。程序员
1.Git是分布式的版本控制系统,区别于SVN的集中式版本控制系统。二者各有各的好处和弊端,但git是相对更加快速、简单的,现在也更加流行。web
2.git中的工做区和暂存区的两个概念很是重要。工做区相对于版本库,经过 git add把工做区的存储到版本库中的stage中,而暂存区stage经过git commit把修改提交到版本库的分支上。Stage暂存区和分支都存在于版本库中。具体如图。app
3.git会为咱们自动建立一个master分支,以及指向master的一个指针HEAD,指向当前分支。当你使用git branch切换分支后,HEAD指针会指向该分支。经过git reset 能够回退版本,HEAD表示当前版本,HEAD~表示上一版本,上上版本就是HEAD~~,上一百个是HEAD~。webstorm
4.当你想回退到某个具体的版本时,或者回退以后又想回到以前的版本,能够经过git log指令或者git reflog查看提交的commit id 而后经过id回到那个版本分布式
5.git diff 可让你看到版本提交之间有哪些修改了的地方。在webstorm的可视化界面中这个修改就能很好的查看(webstorm牛逼!)学习
6. git checkout 不只能够切换分支,还能够撤销修改。加入你的代码没有add,那么git checkout --filename就是把你的修改撤销到版本库中同样的代码,假如你的代码add或者commit了,那这个指令就是撤销修改回到添加暂存区后的状态。总之就是让你的代码回到最近的git add和git commit的状态版本控制
7.由于git checkout有多种功能容易混淆,因此git也推荐使用git switch来切换分支指针
8.git merge 默认使用fast-forward模式,这样合并后加入删除了分支不会保留分支信息,使用—no-ff模式能够保留信息
8.在分支策略中,master应该是很是稳定的,应该是仅用来发布新版本,能够新建一条dev分支专门用于开发,团队在dev中新建分支来分工合做。
9.当你在一条分支上工做却要临时去另外一条分支修复bug时,能够git stash保留工做现场,当bug修复好了能够用git stash apply来回到现场。另外为了不在一条分支上的改动重复工做到其余分支,可使用git cherry-pick <commit> 命令来“复制”修改
10.用git rebase结合vi操做来合并commit提交,将本地未push的分叉提交历史整理成直线。
11.git分支管理是重中之重,也是git的精髓,要好好学习!
以上就是我目前对git的一些感悟。另外经过反思我以为以前的“技术感想”不太像是“感想”,侧重点更接近于“整理”,之后但愿本身更加以“感想”的方式去记录本身的学习成长历程。
共勉,加油!