- 文件三个状态,add之后从工作区(原始状态)到暂存区,commit之后从暂存区到版本库
- 工作区 暂存区 版本库
- unstage stage master
- 删除文件
> git rm test.txt
> git commit -m "remove test.txt"
- 修改或添加文件
> git add test.txt
> git commit -m "add test.txt"
- reset 所有文件 恢复到指定版本
> git reflog # 查看所有版本
> git reset --hard 1094a # 去到指定版本
> git reset --hard HEAD^^ # 回退两个版本
> git reset --hard HEAD~99 # 回退99个版本
> git reset --hard HEAD{5} # 回退版本HEAD{5}
- 单个文件 恢复到原始状态 或 恢复到上一次add之后
> git checkout -- readme.txt # 文件恢复到上一次add或者commit的状态
- 单个文件 已经add了,恢复到原始状态
> git reset (HEAD)readme.txt # HEAD回到原始状态 HEAD可省略
> git checkout -- readme.txt # 恢复到修改者删除之前的状态
- checkout 单个文件 恢复到指定版本
> git checkout 845dc -- readme.txt
- checkout 切换分支
> git branch # 查看分支
> git branch <name> # 创建分支
> git checkout <name> # 切换分支
- merge 合并分支
> git checkout -b dev # 创建+切换到dev分子,这个时候就可以修改分支的文件了
> git checkout master # 将HEAD指向master
> git merge dev # 合并分支dev到当前分支(master)
> git branch -d dev # 删除分支dev
> git merge --no-ff -m "keep merge info" dev # 合并dev分支到当前分支,并且可见(git log)合并过程(--no-ff)
> git log --graph --pretty=oneline --abbrev-commit # 显示合并过程的日志
- commit
> git commit -am "add and commit" # add和commit 一步到位
> git commit -m "commit" # commit
> git commit --amend --no-edit # 提交到最新版本,保持原来的提交信息不变
- rebase 基于其他分支修改当前分支
> git checkout master # 切换到主分支
> git rebase dev # 基于dev 修改当前分支(master)
- stash 临时改其他Bug时,stash当前工作状态
> git stash # 将修改过的文件放到stash缓存区
> git stash pop # 恢复stash前的状态
> git stash list # 查看缓存的stash状态
> git stash apply stash@{0} # 恢复指定stash
- 强行删除已经commit却还没有merge过的分支
> git branch -D <name> 强行删除
2019年2月22日23:33:18