一、git回滚代码
1、本地代码没有提交到暂存区
git checkout -- file
2、本地代码已经提交到暂存区
git reset HEAD file //把文件从暂存区撤回到工作区
git checkout -- file //再把工作区文件回滚
3、已经commit到版本库的代码
git reset --hard HEAD^ //回滚到上一个版本就是HEAD^,上上一个版本就是HEAD^^
git reset --hard HEAD~100 //回滚到之前100个版本
git reset --hard 版本号 //回滚到某个版本号
二、创建分支
1、概念
master指向提交
HEAD指向的就是当前分支
2、创建分支dev,并切换到dev分支
git checkout -b dev
--- git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch dev //创建分支
git checkout dev //切换分支
git checkout -b branch-name origin/branch-name //创建分支和远程关联,这样pull的时候不用指定分支信息(用于多人协作,他人创建的分支)
3、查看当前分支
git branch
4、合并分支
git checkout master //切换分支
git merge dev //合并分支
5、删除分支
git branch -d dev
git branch -D dev //强行删除
6、Fast forward模式
在没有冲突情况下使用git merge dev会触发Fast forward模式,它会自动合并并提交,合并后看不出来曾经做过合并
git merge --no-ff -m "merge with no-ff" dev // --no-ff会禁用Fast forward模式
7、创建本地分支和远程分支的链接关系
git branch --set-upstream branch-name origin/branch-name
三、常规命令
1、查看日志
git log --graph --pretty=oneline --abbrev-commit
2、分支工作区“存储”
git stash
git stash list
git stash pop //恢复tash内容并删除
git stash apply //恢复stash内容,但是不删除
git stash drop
3、远程命令
git remote -v //查看远程信息
4、标签
git tag v1.0 //创建标签
git tag v0.9 6224937 // 创建某个ci的标签
git tag -a v0.1 -m "version 0.1 released" 3628164 //创建有说明文字的标签
git tag //查看所有标签
git show v0.9 //查看标签信息
git tag -d v0.1 //删除标签
git push origin <tagname> //创建的标签都只存储在本地,不会自动推送到远程,推送标签到远程
git push origin --tags //一次性推送全部尚未推送到远程的本地标签
删除远程的标签
(1)git tag -d v0.9 //先删除本地
(2)git push origin :refs/tags/v0.9 //删除远程
5、拉取代码pull fetch
git pull 相当于 git fetch + merge
四、相关配置
1、忽略git目录要提交的文件有两种情况
(1)忽略没有在远程仓库上的文件
在开发目录下创建.gitignore文件,相关配置可参考https://github.com/github/gitignore
(2)已经在远程仓库,需要忽略本地的
git update-index --assume-unchanged 文件名
取消:git update-index --no-assume-unchanged 文件名
2、配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"