也许你已经开始使用 git,这个最流行的分布式版本控制工具,本篇就一些实际项目的实践经验跟大家分享分享。
目录
- 基本原理
- 必会指令
- 小玩意:这些场景你怎么办?
- 一个 commit 的各种规范?
- 分支 branch 怎么管理?
- 场外链接
基本原理
- 设计思想:DAG 文件 diff
- 基础架构:blob / tree / commit
- 三区:工作区--暂存区--版本库
必知必会指令
- git init
- git add
- git commit
- git remote add/remove
- git fetch
- git pull
- git push
- git checkout
- git show
- git log
- git diff
- git status
- 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 的各种规范?
- 一个 commit 要干啥?能不能就做一件事
- commit message 规范?
- 标题不要超过 50 个字
- 标题和内容中间用空行隔开
- 更多相关信息
- reviewer?
- qa?
- wiki?
- 为啥人们都走极简路线?
- 临时 debug 的 commit:update update fix fix fix
- 一个 commit 包含了太多内容,无从下手,只好写:Add
- 没有强制规范,懒
- 来看看人家的 commit message 标题怎么写?
开发分支如何管理?
- 聚合多个 commit:
git rebase -i
-
git merge --squash
开发/功能分支 - gitflow 了解一下?