Git的使用方式及其优缺点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/angrysnail/article/details/83503641

以下是我对Git的一些理解,并从开发者的角度说明一下为什么我们需要它,原来集中式的代码管控工具,有什么让我们这些coder不爽的地方。

从几个场景说起吧。

1. 团队分开两地开发,一部分在客户现场,一部分人留在家里(最终的代码当然一定会存在家里)。如果用SVN,代码库定在家里,客户现场的人怎么提交自己的代码,进而完成两个队伍工作成果的合并呢?可能有人会说,SVN支持Patch之类的东西,这么说吧,我开发将近十年了,没用过这个东西,也许没有太多发言权,但是这一定不是一个很好的方式。

2. 正在开发中,改了将近十几个文件,突然,被要求进行一个紧急bug的修复,而且修完后要立即提交。我们可以赌此bug修复时不会改到上述的十几个文件,但还是不放心,此修复中会不会引入一些那十几个文件中的修改呢。一旦提交,库上没有你本地的修改,别人下下来,一编译就报错了。有没有办法解决此类问题呢?老程序员,都会checkout两份代码,有一份始终保持与库上一致,一旦遇到这个事,就切换工作区到最干净的代码中去修改。但这终究不是一个好的方式,不能从工具级别对此类问题进行规避。Git恰恰提供了方式来让你以一套代码来应用多份工作内容。

以上是我们经常遇到的场景,可以SVN极不适合处理此类情况。但Git却能很好解决上述两类问题。

首先纠正一个问题,有许多新程序员,觉得Git是SVN+push,这真是太冤枉了,Linus Benedict Torvalds,怎么会给程序员制造困难呢,他可是巨侠级的程序员啊。如果你在用Git,而没有用到如下命令,请认真检讨一下自己,有必要用Git么。

1. git branch 

branch是Git的主打优点,给程序员以极轻量的方式,提供分支功能。那对我们日常开发,有何用处理呢?
如我要进行一个大bug的修改,我可以用如下命令开始。

> git branch bug1878

此句建了一个bug1878的branch,但是你当前可能还处于master分支,怎么切到新建分支呢,
就是用checkout,这样你再看你的分支情况,可以看到你已经切到gbug1878上了,
这样你就可以愉快的进行开发了。

* 有个事,需要注意一下,你在切换时,经常会提醒你,你当前有没提交的东西,
这时大可以将自己当前的工作先提交到当前分支上,然后你才能切换到新分支上。
如果是一些新加的文件,没有git add,那么,这些文件会自动跟着你到bug1878上,
所以这几个事要考虑一下。

> git checkout bug1878

这个命令用来进行分支切换,如果你在用eclipse的话,那工程上原来的master可能已经改为bug1878了。

2. git checkout

前面已经大体说了一下checkout,其实它除了切换分支外,
还有一个功能即如果我们不要我们当前的更改了,可以用这个命令后面跟上文件,来将文件的更改放弃。

3. git rebase/merge

> git checkout master

bug1787你已经修改完毕,并且在bug1787分支上提交了。
那么checkout这个命令让你切换回master上,为什么切回来呢?
其实默认你的本地分支中,只有master分支给push,原因是只有它有upstream,
当然你可以进行设置来改变此类情况。

> git rebase bug1787

这句最重要,这是将你的工作成果合并到master上,等待你随后的push。
强调一下rebase和merge的区别,rebase会保留你的提交历史,如你在改bug1787时,
提交了五次,当然comment也写的挺好。你如果希望push后,这五次提交记录还能查看到,
就用rebase,否则用merge,merge仅是将你最终修改的内容和master上的内容合并起来,
push后,仅有merge这次的comment.

4. git stash

如果你是个粗心的家伙,不小心在master分支上展开了行动,当改到十几个文件的时候,
发现bug1787让你火速修改,你这个时候可能觉得Git没法帮你了。
错!此时,你可以将你的修改先暂放一下,即用此条命令:

> git stash

> git branch bug1787

上面这两条命令,救了你,前面一条是stash,会将你在master上的修改暂存,
然后你又可以新建branch来应对紧急事件了,改完后,
起上面说的流程commit -> checkout -> rebase/merge -> commit -> push,
即可将此紧急事件成功完成,且不影响你刚才工作。

等等,我原来的东西你给我放哪里了,没问题的,git给你放好了,怎么找到呢?

> git stash list 

会列出你所有stash的东西

> git stash apply

会将你刚才stash的东西给你放回来,让你接着前面的活,接着干。
当然执行这条命令的时候,你最好在master分支上,毕竟你一开始是在这个分支上stash的。

所以,不要粗心,进行稍微复杂点的任务,最好新起个分支毕竟分支很廉价,不要偷懒。

可能有人会问,分支多了,我都不用了怎么办,大胆删除,自己查查命令吧,没记错的话是git branch -D bug1787.当然Git还有许多其它的命令,但是我觉得,基本的开发这些就够了,如果会了这些Git的蛋糕就已经吃了80%,至于其它不会也不会让你没法进行开发工作,就像SVN的patch之类的东西一样,不会我们不照样在使用它么。

预祝各位在随后的开发中,愉快享用Git,谢谢Linus.

另,现在git可以用github和gitee,其中gitee里可以建一些private的项目,适合几个人做个小东西,挺好的

猜你喜欢

转载自blog.csdn.net/angrysnail/article/details/83503641