Git的两个核心特征是:去中心化、记录快照而非差异比较
Git原理
Git的工作区就是保存在电脑上的实体文件夹;stage称为暂存区,add时添加到里面;master是主分支,而HEAD可以理解为一个指针,指向当前的版本。
参考图:
部分常见指令
指令 | 含义 |
---|---|
git branch | 查看分支 |
git branch name | 创建分支 |
git checkout name | 切换分支 |
git checkout -b name | 创建+切换分支 |
git merge name | 合并某分支到当前分支 |
git branch -D xxx | 删除本地分支 |
git push origin --delete xxx | 删除远程分支 |
git diff xxx1 xxx2 --stat | 对比2个版本之间的改动 |
git co . | 修改了代码后,想去掉修改 |
git reset HEAD . | 修改了代码后,add了,但想撤回 |
git reset —hard xxxxxxxxx | 修改了代码后,add并commit了,但想撤回 |
git reset --hard xxxgit push -f | git回滚到某个版本 |
git stashgit co xxxgit stash pop | 暂存写好的部分,再切换分支 |
注意点
- 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并;而fast forward合并就看不出来曾经做过合并。
- Git切换分支的时候,最好保持一个干净的工作区。
- 切换到主分支上新建分支时,一定要及时pull!!!
Git最佳实践
- 要经常提交(细粒度地提交)
- 将功能分成很多小块,每次全部完成某个小块时再提交,不要还没完成就提交
- 如果没完成,而需要切换分支或pull操作,可以先stash一下
- 提交(commit)之前要确保已有的代码测试通过,且不影响到其它代码
- 提交message要说明,为何变更以及和之前的区别,用现在时态
- 版本控制与备份有区别,应当遵循前面5条实践规则,而不要仅仅把它当做备份的工具
- 要经常使用branch,比如开发的新特性分支、修改的bug分支等等
- 工作流程的规则要保持一致,至少要和团队一致
Git提交时的hook相关
参考:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
解决git pull/push每次都需要输入密码问题
参考:https://blog.youkuaiyun.com/nongweiyilady/article/details/77772602