在路上-git

2018-07-11  本文已影响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》
上一篇 下一篇

猜你喜欢

热点阅读