Git研习笔记(一)

前言

工欲善其事,必先利其器。使用git有一段时间了,一直玩的不深,趁此总结一番,捋捋思路。


正经说事

  1. git config --global alias.xx xxxx
    都说不会偷懒的程序员不是好程序员,有些git命令很长,逐字敲总觉得差点意思。万能的git当然早有准备,提供了别名功能。举个栗子
    设置别名
$ git config --global alias.co checkout
$ git config --global alias.cmt commit
$ git config --global alias.st status

so,对应的,操作就变成了

$ git co branchname
$ git cmt -m "description"
$ git st

有没有很简洁

  1. git rebase -i ^
    rebase好好用,手动划重点
    设想你已经commit了,突然发现,有行日志需要加,有段多余代码忘了删......如此种种。几趟下来,大小commit堆了三五个,提交之后,日志看起来未免零散,需要对commit进行合并。
    执行git rebase -i "commitID"^(^表示上一次,即包含ID指向的提交)
    此时弹出编辑界面如下

    整行删除或将pick改为drop都可将此次commit删除

    对比前后log, 47a5a是不是真的看不到了
    drop前

    drop后

另,若删除的是已push到远程分支的提交,一定要记得git push origin -f强制提交,这样那条恼人的commit就真的消失于无形了。

  1. git rebase
    神奇的rebase(变基)还有许多功能
    最常用如 git rebase
    指令如其名,先上几张merge跟rebase操作的对比图直观感受一下

    操作前

    执行git merge

    操作日志

    执行git rebase

    操作日志

    如果说光看分支结构图只知道rebase很干净的把四次提交合并成一条直线的话,reflog就很清晰的告诉我们,rebase操作执行后,branch2分支的两次提交,真的成功“变基”,重新生成了两次提交,“入赘”到branch1的提交之后啦。
    那么,变基之后,两分支新的提交都是以此“入赘”点出发生成了对嘛?不急,再试一发对比图
    git rebase branch1后,两分支分别再次提交

    git merge branch1后,两分支分别再次提交

    ok,完美验证

  2. git tag
    除了切换到某个branch,某次commit,我们有可能还需要切回某个成型的版本。比如,“xx你看一下,2.0那个版本用户投诉有个什么什么问题......”,那么这个时候,只需要'git checkout ',就可以一秒回到解放前啦没毛病
    几个常用命令:
    git tag 打标签
    git tag 查看所有标签
    git tag 对某次commit打标签
    git show 查看标签信息
    git tag -a -m "description" 创建带有说明的标签
    git push origin 发布标签
    git push origin --tags 提交本地所有标签
    git checkout 切换到标签

  3. git reset
    另一个时光倒流的命令当然要说说 git reset,
    常用指令:
    git reset HEAD 撤销对file的add操作
    (git checkout -- 撤销file在工作区的所有修改)
    git reset HEAD^ 回退到上一版本(保留本地代码)
    git reset --hard HEAD^ 回退到上一版本(撤销本地修改)
    git reset --hard 回退到某次提交(撤销本地修改)

  4. git gui
    执行命令,显示视图界面,如下


    改动一目了然,再也不用担心手抖提交了本地测试代码了


最后

Git门道深似海,研习还需下苦功,以后会继续更新Git研习笔记(二)道行甚浅,还请盆友们多多指教。

你可能感兴趣的:(Git研习笔记(一))