gitbash下命令行操作技巧

用git已经一段时间了,在使用过程中,一直用不好界面客户端,并且由于需要在两套系统windows7和centos6.5上使用git,所以切换回了命令行方式,使用过程中常用的命令进行记录以及简单的解释。

1、初始化:

目前为止,并没有自己初始化过本地库,只是从远程库里面克隆,命令为:

git clone + 远程路径。

2、分支管理

我最喜欢的就是git的版本控制功能,在将远程库克隆到本地后,会有一个master分支,通常我们并不在这个分支上进行开发,而是新建一个自己的分支。这就涉及到git的分支管理。分支管理,无非就是对分支进行CRUD操作。

2.1查看分支 git branch

这时候会列出所有的分支。

由于刚刚checkout出来,所以现在只有一个分支,就是master(默认分支)

现在我们新建我们的开发分支,命令为:git branch +分支名

新建一个名为dev的开发分支:git branch dev


没有消息返回,就说明已经创建成功了,我们用 git branch重新查看一下,发现:果然多了一个dev分支


这个时候,我们发现master 的前面有一个*,这个代表当前分支,如果*在master前面,说明当前的分支是master,那么如何将分支切换到dev上面呢。

切换分支:git checkout +分支名

切换到dev分支:git checkout dev



这个命令很友好,告诉我们,switched to branch ‘dev’

这时候我们重新查看发现,可爱的小星星已经转移到dev分支上了


这个时候,就可以去开发了,有人会疑惑,为什么要切换到其他分支上开发,我一开始也很不理解,但是慢慢的用用,发现这个好处是说不完的,留待慢慢体会吧。

下面我们继续。

已经切换到开发分支了。我们来进行开发。去修改一下代码码。

我修改了./projects/service/pom.xml文件,(在dev分支上修改的)像其他版本控制工具一样,修改完代码,得提交。在提交之前,我们得先看一下,我们修改了哪些东西,。肿么看呢,肯定也是命令行勒。

查看修改:git diff 默认比较的是当前分支的上次提交,和现在代码的区别。注意,是当前分支(dev),上次提交(第一次创建)与当前修改的比较。这段比较绕口,但是你得很清楚。

输入命令:git diff


你可能看不懂这是神马东东,我简单解释一下,

-      3.8.1表示你删除了这一行,

+      4.4表示你增加了这一行。

如果修改的文件比较多,你可能需要分页查看,space键是向下翻,B键是向上翻。

如果想比较某个指定的文件,也是可以的,命令

git diff ./projects/service/pom.xml 表示的就是表示从当前目录开始的/projects/service/pom.xml文件。

(git diff还有很多用法,请用git help diff命令进行查看。我们暂时介绍到这里)

比较完成后,我们知道哪里做出了修改,并且确认这样改是我需要的(并不一定是正确的),那我们就需要提交到分支上。

这个时候,我们该提交了,但并不是直接commit,因为git是linus这个货开发的,这货就是想要自由,直接commit是不自由的,所以,不能直接提交。为什么呢,因为git给了你提交的自由–你要提交什么?

这个时候,你需要git add一下,来告诉git,你要提交哪些东西。

如果我们要将所有修改都提交到dev版本库。 那就git add . 。因为“.”表示将所有修改都提交到版本库。如果不是将所有修改提交。那就制定文件

git add – file

例子:git add – ./projects/service/pom.xml

在添加文件以后,我们就可以提交了,提交的命令 git commit -m “say something”

在提交的时候,需要强制制定注释,就是你为什么进行这次提交,也是为了便于将来查询。

提交的过程中,会有一些提示,告诉你提交了哪些东西。

这个时候,你已经完成了一次提交,可是任务远远没有完成。因为你提交到了本地的版本库dev,远程的版本库里面,并没有你修改的代码。那么我们来将我们修改的代码提交到远程版本库。

明确一下目标:我们要将我们的修改提交到远程版本库。

存在的问题:可能存在冲突,这个怎么弄呢。

于是,我们按照下面的方式进行操作。

1、切换回master分支,进行pull操作。

命令:git pull (按照提示输入密码)

2、这个时候,我们的master是最新的代码了。我们在本地处理冲突。

3、处理冲突,首先先比较。比较的命令:git diff

git diff 后面可以跟着两个分支,我们现在有两个分支master 和 dev 。可以进行比较 git diff master dev 和git diff dev master 这两种比较方式的出的结果正好相反的。

比较的规则:以第一个分支为基准,如果第二个文件增加了一行,会以+      3.8.1的方式进行表示,意思是第二个版本相对于第一个版本,在指定位置新增了一行,内容是: 3.8.1;如果第二个文件相对于第一个文件减少了一行,表示方式为:-      1.2.17 减少的内容为:1.2.17清晰可见,但不是比较直观的对比。虽然一开始不适应,但是我相信过一段时间,会适应的。

4、比较完了差异,我们就要“自由的”选择我们需要提交的内容。

我建议以master和远程版本库进行提交。这样提交清晰,并且不容易出错。

这个时候,我们就要将dev的修改合并到master分支,以便master能将本地修改提交到远程版本库。合并的命令 git merge

git merge + 分支名称:表示将指定分支的修改合并到当前分支,如果当前分支为master 那 git merger dev 直接就将dev的所有修改都合并到master上了

这个时候,如果有冲突,那我们就要手动处理冲突,处理完冲突,提交就好了。

5、在处理冲突过程中,有一些技巧性的命令。

例如,如果master和我们的dev冲突了,那我们可以将master的内容checkout到master上,然后将我们的修改添加到新checkout出来的文件上,指定文件checkout的命令

git checkout master – ./projects/service/pom.xml

将master的./projects/service/pom.xml文件checkout到当前目录。

所有的冲突处理完毕后,我们的修改就已经完成了,这个时候只要git push 到远程版本库就好了。


ps:有人说git的使用比SVN、CVS要复杂,我也承认,但是在实际开发中,熟练的使用git能让我们的工作更有弹性。熟练以后,你会发现,git简直太伟大了,真的太爽了。

以前我是闭眼式开发,就是自己写过些什么,从来不知道。只知道用其他版本控制软件的客户端比较一下,如果是需要提交的,提交,否则删除。使用了git后,我发现对代码的要求更高了一些。尤其是使用命令行的方式,git会告诉我哪里多了一个空行,这里可能会影响代码的风格,也许这里是需要修改的。

在这里很感谢我公司的技术负责人,他从事开发工作20年了,但仍然带领我们走在技术革新的路上。让我这个年轻人心中有愧。希望自己快点成长起来吧!







        转自http://blog.csdn.net/liushuilining/article/details/40706257

你可能感兴趣的:(版本控制工具,git,windows,centos)