07月13, 2017

git基础进阶(简单篇)

接触git已经有1年半多的时间了,然而我发现自己对git这一块并不是那么地熟。

昨天下午,群里面有人发了这个链接,我觉得有兴趣的朋友可以试试,还是蛮好玩的:

我之前还是蛮喜欢用命令行来提交的,倒不是因为装逼,而是因为可能习惯了吧,而且一般都是下面的几行命令,也甚是方便:

git status  # 检查变更的文件
git add . # 将所有的变更加入暂存区
git commit -m "sfaf"  # 提交到本地
git push  # 提交至远程
git pull   # 拉取远程代码
git stash # 缓存当前代码

工作中,前5条,或者中间4条差不多。。第一条用来查看一下变更了哪些文件。

在webstorm的Terminal下,commit中文信息是这样的,我输入的是我要测试,然后出来的却是:

test

当然也许有人会说,你可以输入英文commit 信息啊。确实,我得反思一下自己的英文水平为什么如此的差。

可能也有人觉得,commit信息随便输点东西,不就好了么,这么在乎干嘛?

在我司的gitlab上,我查看了一下,似乎后端童鞋写的git commit信息比较工整,前端童鞋写的有什么js、css、update,还有自己名字的拼音,也是醉了。

所以基于以上的原因,我还是使用SouceTree来管理代码。

先说一条原则:

git commit信息是非常有必要工整化的,一是方便回滚,二是方便review,三方便其他人知道你做了什么功能。

SouceTree的基本功能,就不扯开了,说几个不常用的功能吧:

  • merge代码(git merge

比如我当前在test分支,且push了代码:

merge1

我们要将test的代码合并到master里面,则先检出master,即为git checkout master

merge2

随后,在test分支那里右击,选择合并test到master

merge3

这时候可能会有冲突,sourceTree帮我们提供了简便的方式,如下:

merge4

当然这种方式有些简单粗暴了,有些在团队里面,还是不适合这样做的。我们可以通过代码区块对比,然后要保留的保留下来,该删除的删掉即可。

  • 缓存当前代码(git stash

stash1

stash2

  • 新的提交覆盖之前的提交信息

当然这个操作是前一个没有push到远程。

命令是git commit --amend

amend

  • commit注释修改、调整顺序及合并

当然这个操作也同样是未push的commit ids。

这个是通过git rebase来实现的。。当然rebase也可以做分支的合并,但我个人推荐是用merge来做合并,rebase做commit message的管理。

rebase-1

rebase-2

rebase-3

随后,我们可以修改每一条的commit message。

也可以删除某个commit log(会有冲突),将commit ids排序(比如说功能A,功能B,排个序,可能会有冲突)。

也可以将某几个commit ids合成一个,然后添加新的注释。

rebase-4

rebase-5

会了以上这些,基本上git的90%都会了。

当然根据二八法则,有时候容易碰到二,却最终要花80%的时候,这确实也挺无奈的。所以平常也要多挖掘挖掘git的一些功能。

本文链接:www.my-fe.pub/post/git-simple-advanced.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。