毕业快两年,前一年一直在使用git图形化管理工具,最近喜欢上了命令行操作,简单暴力美啊,随心所欲的感觉真的不错,以致于放弃了SourceTree等工具
提到命令行,推荐一本书,《git权威指南》 ,适合边读边实践
简单理解基础概念
工作区:你的工作目录
暂存区:git add 之后
本地版本库:git commit 之后
远程版本库:git push 之后
常见命令
- git init 初始化一个git仓库,也就是在你的工作目录下创建一个.git文件夹
- git remote add 别名 仓库地址 添加一个远程仓库地址
- git remote rm 删除一个仓库
- git remote -v 列出仓库列表
- git fetch 获取远端分支
- git branch -r 查看全部分支,包括远端分支
- git pull
- git push
- git push -f 强推,不建议使用,生产环境建议ban掉此操作
- git log
- git diff 可以diff两个commit之间的差异
- git show
- git stash 贮藏,还原一个干净的工作区
- git stash pop 弹出第一个贮藏
- git checkout branchName 切换分支
- git checkout commitId 切换到某个节点,这时将处于指针分离状态
- git checkout fileName || . 抛弃工作区的修改,已经提交到暂存区的不会改变
- git reset –hard 重置到head指针指向,会抛弃工作区和暂存区所有的修改
- git reset commitId 重置到某个节点
- git revert 神器啊!!!回滚全靠它,这里有一个小小的建议,每次提交只干一件事,类似于设计模式中的单一原则,相信我,回滚的时候,你会感谢自己为何如此机智
- git bisect 二分查找,良好的提交习惯就用不到它
- git patch 打补丁
- git apply 应用补丁
开启颜色输出
git config --global color.ui.true
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
命令简化
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.lg 'log --graph'
每个命令配上不同的参数,会有不一样的惊喜,具体这里就不写了,有问题,下方可以问我。
设置保护分支
应用场景:某个分支只有master才能push,这时你就可以把master分支设置成保护分支,别人只能通过merge request向你发起请求,经你code review 后合并到主线分支,流程很规范,也最容易把控,减少线上出问题的风险