Git的使用方式及其优缺点

xiaoxiao2025-04-09  15

以下是我对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的项目,适合几个人做个小东西,挺好的

 

转载请注明原文地址: https://www.6miu.com/read-5027886.html

最新回复(0)