欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gitbash下命令行操作技巧

程序员文章站 2024-03-24 22:23:22
...

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

1、初始化:

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

git clone + 远程路径。

2、分支管理

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

2.1查看分支 git branch

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

gitbash下命令行操作技巧

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

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

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

gitbash下命令行操作技巧

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

gitbash下命令行操作技巧

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

切换分支:git checkout +分支名

切换到dev分支:git checkout dev


gitbash下命令行操作技巧

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

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

gitbash下命令行操作技巧

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

下面我们继续。

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

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

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

输入命令:git diff

gitbash下命令行操作技巧

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

-      <version>3.8.1</version>表示你删除了这一行,

+      <version>4.4</version>表示你增加了这一行。

如果修改的文件比较多,你可能需要分页查看,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 这两种比较方式的出的结果正好相反的。

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

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