Git版本管理差异,与git常用命令记录和使用说明(随着出现的问题,会持续记录更新)
使用过多年的svn版本管理项目的我们。最近几年又被新的,更高效,更适合大团队协作,共享的新的版本管理霸主git吸引住了。
svn的版本管理,其实做的还是很不错的,项目中很多的资源文件,比如培训,需求,方案,设计,实施等,还是有很大的市场空间,IT团队在svn的使用上,会让不同的角色加入,让协作更高效。
痛点:svn在代码管理上有一个致命的痛点,那就是如果多个开发同时去修改一个文件,那么这个文件的冲突必然是冲突的,就会导致其他N-1的劳动是无效的,需要花更多的精力去排查冲突,从而引出风险和时间成本增加等问题。
git在版本上,采用的主干+分支的方式并行,有几点好处:
1 同一时间点,各分支上的代码,都是相对独立的,
2 对同一个文件的冲突定义也会更细,理论上是定义到代码行数的更改,只有行数相同的地方做了修改,才会形成冲突文件。
3 冲突文件的展示也非常的直观,什么地方删除,什么地方修改了,git都能给你明确标注。这也就最大程度减少了,解决冲突过程中代码回退修改带来了,开发人员的差错。
上面几点是最近几年单纯从使用svn,git得出来的版本和代码冲突上的区别。
因为我们项目迭代非常快,所以svn的管理模式,完全是赶不上git这种分支+主干的松耦合方式的。 实践证明如果你的团队项目的快速迭代开发模式,git作为版本管理确实会有很多优越感。 尤其是中大型项目的开发团队。
简单说明下git的命令和使用场景(有新问题会持续记录)
常见操作流水:
1 git clone 后面是一个github的一个项目地址 https://github.com/…/…/xx.git
项目clone。这个在idea的clone功能一样:idea里面有一个VCS->GIT->CLONE 一般会写http地址。
2 git checkout master/任何分支名称
当我们需求切换分支的时候,git checkout 就行。
命令执行窗口,idea工具里面有一个 Terminal,可以直接打开执行
也可以,找到你项目的源文件。在源文件夹,空白处,右键,选择 git bash here .(你已经安装了git客户端情况下)
3 当完成了分支切换,一般情况你需要先 git pull ,拉取代码,
4 当你完成本地代码之后,需要经过,以下三步完成代码提交
A: git add 你需要提交的文件路劲 ,这个在命令窗口下,能清楚看到你变动的绿色的没问题的文件路劲。
或者 git add . 点号代表全部提交本次的修改
B :文件添加成功,开始提交本地仓库 git commit -m “commit 描述”
C 本地仓库提交成功后,直接 git push
5 push成功后,你再去github项目里面,提交你的merge request
6 等待合并到master
上面的最基本的操作。
但是往往有些异常:说几个最常见的
一:提交时候提示冲突代码存在
1 提交的时候,提示有冲突,需要先解决冲突,一般是git pull,然后合并远程主干最新分支代码,这样能保证你的代码之外的都是最新最新的。再依次对比你的本地的冲突文件,该删除删除,该调整调整。
2 完成之后,相同的操作,git add /git commit/ git push /merge request
二:提交的请求里面包含了,其他开发的非当前分支记录的代码
一般正常情况下,你提交的merge request应该是只有你本地分支的记录,当前操作的文件。不会有其他人的代码记录。但是我们经常会遇到,我的请求里面。莫民奇妙多了很多其他开发大大的代码,然后我并没提交修改。。这怎么办?
A:close掉你的本次merge 请求。
B:把你本机的,你需要提交的代码。全部打一个空格,作为变动。
然后 再次更新,合并远程分支(有的开发习惯本地但是一定要保证本地master在最新版本上)。 再次add.commit push。
C ,第二布的操作,完成之后,再提交merge request。基本可以保证只有你自己分支 的提交记录了。再也不怕把别人的分支错干上去!!!
三:如果本地分支,冲突上百上千个代码,怎么办?
出现这种情况还是偶尔有的。莫名其妙就冲突了成百上千的代码。自己可能是切换了分支,或者更新了下什么东东。总之现在挨着挨着排查冲突太费神?怎么办
小技巧:
切换到另外分支,删除本地分支,重新拉取分支
1 全量git stash,就是先把这些代码全部存起来。包括自己打算提交或者变动的(这个毕竟是少数) (git status可以查看当前你处的分支) 记录下这个分支名称。copy
2 git checkout master
3 删除刚刚的本地分支
git branch -d 需要删除的分支名称 ;执行成功后,本地分支就干掉了。你再git checkout 你需要分支从新捞取即可。
回退到指定版本
如果你没那么多文件需要调整,你就回退到最新或者指定版本
操作很简单:
1 git log
你会看到commit 后面又一个很长一串的字符,这记录id,copy 它!
2 git reset --hard log的提交记录(就是图片里面的commit 之后的黄色的字符串)
回退完成。
----以上是项目开发过程中遇到最多的操作。很多都是常用操作。供有问题的同学参考使用。