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
你可能看不懂这是神马东东,我简单解释一下,
- <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
上一篇: 遥感影像分割成多幅小图像方法
下一篇: SLIC学习笔记
推荐阅读
-
gitbash下命令行操作技巧
-
js下写一个事件队列操作函数_javascript技巧
-
解决PHP在DOS命令行下却无法链接MySQL的技术笔记_php技巧
-
Linux下5个有趣的命令行技巧介绍
-
Linux GUI下怎么打开命令行并操作Oracle数据库?
-
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)_javascript技巧
-
windows下zendframework项目环境搭建(通过命令行配置)_php技巧
-
在Linux下通过命令行来操作使用Dropbox
-
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性_javascript技巧
-
SQL Server2005下的安全操作技巧分享