本文主要是介绍【Git之窗】(三)几个最常用的命令解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
依稀记得上家公司入职的时候,电脑上安装了两个关于Git的软件,一个是"Git Bash",另一个是“Git Extention”,奈何用了三个月之后才顿悟,我一直在用客户端,然而Git的精髓确是命令行啊,就在刚才我画完了一张“我所理解的Git”的思维导图,发现绝大多数二级分支下都是Git的命令行,如图:
这里暂且不对上图进行细致分析,只是为了说明命令行在git的使用过程中,才是王道!
直到工作3个月后,我被调到了炫酷的“VRLe S”小组之后,才开始正式接触Git命令行,于是乎,我静静地卸载了Git Extention,开启了一条命令行的不归路。。。。。
这里我按照每天工作的时间顺序,对于日常工作中最为常用的几条命令行总结:
一、AM 9:00 上班
(1)git pull origin master
作为一名合格的程序员,每天晚上下班前提交自己“当天没问题”的代码,就应该像是“洗脸”、“刷牙”这样日常必备的事情一样,既然这样,同一个项目组内难免别人提交更新后的代码是对自己代码有影响的,于是乎,上班后干活前执行“git pull”命令也就是必须要做的事情了,当然,如果你开发过程中会有多个分支,比如小编在工作中就有三个分支,分别是“master”、“dev”、“htc”,建议执行git pull命令之前,先切换到git master上,别问我为啥?用久了你就知道了。
(2)git status
其实这个命令是该在执行git pull之前就要敲一敲的,我的感觉,git status就像是每次在桌面上点击右键刷新一样频繁。做其他事情之前都该去执行一下这个命令。
如图,你发现了可能在执行git pull之前,有个东西昨天晚上忘记提交了,这就起到了这条命令的作用,同时“On branch dev”、“Changes not staged for commit”都告诉了你当前你应该去做哪些操作。
二、AM 9:30~11:30 进入工作状态
(1)git checkou 分支名
比如我在和别人协同工作时,我的代码是不允许直接写在master上面的,至于为什么?1、master是要当做本地的“生成服务器”来看待的,怎么在“生产服务器”上写测试代码呢?2、提交代码之后,主线会出现“水管现象”(这个名字是我的组长的组长给起的,哈哈,一会儿讨论)。
于是乎,我需要切换到我的开发分支,执行"git checkou dev",之后,就会显示“Switched to branch 'dev'”.如图:
表示我已经切换到我该工作的“dev”分支上面了。
执行这个命令的前提是,你已经有了一个"dev"分支的存在,如果没有,可以执行“git checkout -b dev”,这句话表明我新建了一个分支叫做dev,同时切换过去。
(2)git branch
既然刚才我们讲分支切换,那么通过"git branch"命令,就能够对我当前的工作分支进行检查了,你可以了解到,你的本地仓库有多少个分支,以及当前分支是谁。
(3)git rebase
既然在master上拉去了最新代码,同时也切换到了dev开发分支,这个时候就要把最新代码同步过来啦,如图:
(4)git clone
上午上班到10点了,突然公司入职了一个“镁铝”程序员,我想公司里的男同胞们就该不淡定了,开始纷纷献殷勤,于是乎,小编开始帮她装git,之后要把组里的代码"download"下来啊,在git的世界里,这条命令叫做“git clone”,而非在做itoo时候SVN的"checkout",为啥?如图:
看图中那个“框框”,是我在上家公司时候截的一幅图,使用“git clone”之后,你会发现,你负责的这个类,之前被叫做“扬威”、“yangwei”、“yanghe”这三个人修改过,而且是在180天之前创建的,分别在130天之前修改过一次,90天之前修改过一次……,是不是和SVN不一样呢?这样我们对于自己将要接手的新模块也知道了它的“前世与今生”,更加有利于我们去维护它。
紧接着,就开始编程序了……
(4)git add / git commit
到了要吃午饭的时候了,上午的工作也完成了,那就提交到本地仓库吧,执行“git add -A”把修改的代码放到暂存区,执行“git status”,发现代码从红色变成了绿色,那就ok了.这个时候,可以执行“git commit -m '注释信息'”来将代码提交到本地仓库了。然后就和同事们吃饭去吧。
三、PM 13:00 ~ PM14:00
(1)git log / git lg2
人到了这个时间点,状态往往比较懵,写代码的时候可能会将if(a == 1),写成if(a = 1),一旦提交了有问题的代码(有些错误能够瞒过编译器),你就需要git log这个命令了,但是git log有个缺点,页面布局很不清楚,这个时候,组长给我写了一行配置文件:(“~/.gitconfig”这个文件中)
## insert [alias]lg1 = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --alllg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' -10 --alllg = !"git lg1"
之后,git lg2就看到了这样的界面:
看到了最近的一次提交记录是67seconds之前的提交,是我再htc分支上做的,因为比较懵逼提交了错代码,我要回退到之前的代码,就引入了下面的这个命令。
(2)git reset
参考git lg2界面中每一次提交的哈希码(Git以HashCode作为唯一标识),我将我的代码回退到旧的版本:“git reset 8891175”,如图:
可见,我的“VRLeS/server”的代码已经回退到我之前的版本了,个人建议,这个操作,谨慎!!!
(3)git diff
2点这个时间点确实不适合敲代码啊,适合睡觉,因为你总会忘记自己究竟改了哪些代码,所以,有了这个命令就可以比较自己未add,未commit的代码,与已经commit的代码之间的差别了。(最近eclipse上没有用git,先不上图了)
四、PM 14:00 ~ 18:00
(1)git rebase / git merge
这个时候,一天的工作基本差不多完成了,对于临时加入的分支中的代码,如果测试没有问题,就可以合并到master分支当中,如图:
(2)git rm
一旦“特征分支”(暂时的分支)中的代码被合并到了master中,无用的分支也就可以删除掉了,其实我们可以先手动删除,再执行“git rm”命令,就可以成功删除“特征分支”了。
之后执行git commit,把代码提交到本地仓库中。
(3)git push
这个步骤也是下班前的必备操作,执行push操作,把我们今天的成果推送到服务器上去吧!
好了,下班吧,回去做饭了!
That's all.
这篇关于【Git之窗】(三)几个最常用的命令解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!