[TOC]
# 放弃本地修改强制更新
~~~
git fetch --all
git reset --hard origin/master
~~~
# 对比两个分支差异
1. `git diff [branchA] [branchB] >> diff.diff`
会在当前目录下生成一个.diff 文件打开后查看
2. git log branchA ^branchB 比较A分支中有B分支没有的提交记录
[更多参考](http://blog.csdn.net/u011240877/article/details/52586664)
# 撤销git pull
[http://blog.csdn.net/russle/article/details/52387870](http://blog.csdn.net/russle/article/details/52387870)
第一步,执行git reflog获取你自己的commit id(这里就是A1)
第二部,执行git reset –hard A1(这里的A1就是你自己最初提交patch的commit后的id)
第三部,重新执行git rebase(当然有冲突时需要自己合并)
# 撤销已经push到远端的commit
[http://blog.csdn.net/xs20691718/article/details/51901161](http://blog.csdn.net/xs20691718/article/details/51901161)
1. `git reset --hard HEAD^`
2. `git push origin <分支名> --force`