Git相关代码总结
这是一篇总结性文章
推荐链接
相关配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
基本操作
$ git init : 初始化仓库
$ git add xx : 添加xx到本地版本仓库
$ git commit -m "xxx" 添加提交信息
$ git push : 推送到远程仓库
常用命令
$ git status : 仓库当前的状态
$ git diff : 查看difference
版本回滚
$ git log : 显示从最近到最远的提交日志
$ git reset --hard commitID : 回滚到某个版本
$ git reflog : 记录你的每一次命令
$ git push -f -u origin master : 提交回滚后的版本
工作区与暂存区
管理修改
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
撤销更改
$ git checkout -- file : 可以丢弃工作区的修改
$ git reset HEAD file : 可以把暂存区的修改撤销掉(unstage)
生成密钥
$ ssh-keygen -t rsa -C "youremail@example.com" : 生成相应邮箱的密钥
远程仓库
$ git remote add origin xx : 指定远程仓库地址
$ git push origin (-u) master : 推送到远程仓库
$ git clone xx : 下载远程仓库(含有.git)
$ git pull : 下拉仓库
分支
$ git branch : 列出所有分支
$ git branch <name> : 创建分支
$ git checkout <name> : 切换分支
$ git checkout -b xx : 创建并且切换到xx分支
$ git merge <name> : 合并到当前分支
$ git branch -d <name> : 删除分支
$ git log --graph : 查看分支合并图
$ 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
Bug分支
$ git stash : 把当前工作现场“储藏”起来
$ git stash list : 查看工作现场列表
$ git stash apply : 恢复-> 恢复后-> stash内容并不删除
$ git stash drop : 删除工作现场的内容
$ git stash pop : 恢复的同时把stash内容也删了
Feature分支
$ 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
Tag标签
$ git tag <name> : 用于新建一个标签
$ git tag -a <tagname> -m xxx : 可以指定标签信息
$ git tag -s <tagname> -m xxx : 可以用PGP签名标签
$ git tag : 查看所有标签
$ git push origin <tagname> : 推送一个本地标签
$ git push origin --tags : 推送全部未推送过的本地标签
$ git tag -d <tagname> : 可以删除一个本地标签
$ git push origin :refs/tags/<tagname> : 可以删除一个远程标签
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。
所以,团队合作的分支看起来就像这样: