1. 未进行add(想要取消修改)
git checkout -- . # 全部 git checkout --filename # 具体某个文件 #命令中的--很重要,没有--,就可能变成 "分支切换" 的命令,但是如果没写--,且没有对应的分支,也可以恢复,为了保险,最好还是加上。
2.已经add(取消放入本地缓存)
git reset HEAD <file> # 放弃指定文件的缓存 git reset HEAD . # 放弃全部
3.已经commit ,但未push到远程仓库
git reset --hard HEAD ^ # 回退上一次commit git reset --hard commitid # commitid 为git log 显示的提交历史中的SHA码,只需要前面几位即可。
4.删除远程分支
# 1.7.0之后 git push origin --delete <branch-name >
5.遇到线上bug
开发新功能时,线上出现紧急bug需要修复,这时候手上写了部分代码还不能或者不想提交,又要切换分支先修复bug,git stash 保留当前修改,
后面修复完了切回分支,git stash apply恢复非常方便
6.git stash 详解
https://blog.csdn.net/stone_yw/article/details/80795669
git stash apply --index # 重新应用被暂存的变更
7.git rebase 详解
使用 rebase 和 merge 的基本原则: 下游分支更新上游分支内容的时候使用 rebase 上游分支合并下游分支内容的时候使用 merge 更新当前分支的内容时一定要使用 --rebase 参数 例如现有上游分支 master,基于 master 分支拉出来一个开发分支 dev,在 dev 上开发了一段时间后要把 master 分支提交的新内容更新到 dev 分支,此时切换到 dev 分支,使用 git rebase master 等 dev 分支开发完成了之后,要合并到上游分支 master 上的时候,切换到 master 分支,使用 git merge dev