Git研习笔记(一)

作者: 苹果tree | 来源:发表于2018-06-20 14:47 被阅读131次

    前言

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


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

      对比前后log, 47a5a是不是真的看不到了
      drop前
      drop后
    2. git rebase <branchname>
      神奇的rebase(变基)还有许多功能
      最常用如 git rebase <branchname>
      指令如其名,先上几张merge跟rebase操作的对比图直观感受一下

      操作前
      执行git merge

      操作日志

      执行git rebase

      操作日志

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

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

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

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

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


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

    最后

    Git门道深似海,研习还需下苦功,道行甚浅,还请盆友们多多指教。

    相关文章

      网友评论

        本文标题:Git研习笔记(一)

        本文链接:https://www.haomeiwen.com/subject/njnaeftx.html