美文网首页
在路上-git

在路上-git

作者: 王谙然 | 来源:发表于2018-07-11 18:43 被阅读10720次

    也许你已经开始使用 git,这个最流行的分布式版本控制工具,本篇就一些实际项目的实践经验跟大家分享分享。

    目录

    1. 基本原理
    2. 必会指令
    3. 小玩意:这些场景你怎么办?
    4. 一个 commit 的各种规范?
    5. 分支 branch 怎么管理?
    6. 场外链接

    基本原理

    1. 设计思想:DAG 文件 diff
    2. 基础架构:blob / tree / commit
    3. 三区:工作区--暂存区--版本库

    必知必会指令

    1. git init
    2. git add
    3. git commit
    4. git remote add/remove
    5. git fetch
    6. git pull
    7. git push
    8. git checkout
    9. git show
    10. git log
    11. git diff
    12. git status
    13. git tag

    小玩意:这些场景你怎么办?

    刚刚的 commit 好像有行代码写错了😓

    git reset HEAD~1
    

    刚刚提交的 3 个 commit 写着玩的(太丑了)不想要了

    git revert HEAD~3
    

    手抖 git revert HEAD~1,commit 没了好慌😨

    // 先找到被 revert 的 commit id
    git reflog
    
    // 然后再拉回来
    git cherry-pick a51ad4az
    
    // 或者
    git reset --hard a51ad4az
    

    当前分支正在开发,要 checkout 到其他分支,改动咋办?

    // 先把改动 git add 后执行:
    git stash push -m "[WIP-99%] amazing feature"
    
    // 忙完其他分支的事情,再回来:
    git stash pop
    

    一个 commit 的各种规范?

    1. 一个 commit 要干啥?能不能就做一件事
    2. commit message 规范?
      1. 标题不要超过 50 个字
      2. 标题和内容中间用空行隔开
      3. 更多相关信息
        1. reviewer?
        2. qa?
        3. wiki?
    3. 为啥人们都走极简路线?
      1. 临时 debug 的 commit:update update fix fix fix
      2. 一个 commit 包含了太多内容,无从下手,只好写:Add
      3. 没有强制规范,懒
    4. 来看看人家的 commit message 标题怎么写?
      1. linux: Add one commit for demonstration in doc
      2. go: doc: add one commit for demonstration
      3. vuejs: chore(doc): Add one commit for demonstration
        1. chore 表示这个 commit 是什么类型,feat / fix / test / refactor / build
        2. doc 表示改了哪个部分

    开发分支如何管理?

    1. 聚合多个 commit: git rebase -i
    2. git merge --squash 开发/功能分支
    3. gitflow 了解一下?

    场外链接

    1. sourcetree
    2. git-scm
    3. gitflow
    4. How to Write a Git Commit Message
    5. Git的结构,设计思想
    6. src-d/go-git
    7. 《pro git》

    相关文章

      网友评论

          本文标题:在路上-git

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