Git的常用撤销技巧

撤销git add操作

git reset HEAD <file>   # 取消add操作并保留修改
git checkout -- <file> #若继续该命令,则会删除掉刚刚的修改内容

撤销git commit操作

git reset --soft <commit_id>   #可以回退到某个commit并保存之前的修改  <commit_id>从git log中取,取前7位即可
git reset --hard <commit_id>  #回退到某个commit不保留之前的修改
撤销git push操作
git revert <commit_id>
原理: git revert 会产生一个新的 commit,它和指定 SHA 对应的 commit 是相反的(或者说是反转的)。 任何从原先的 commit 里删除的内容会在新的 commit 里被加回去,任何在原先的 commit 里加入的内容会在新的 commit 里被删除。这是 Git 最安全、最基本的撤销场景,因为它并不会改变历史 — 所以你现在可以 git push 新的“反转” commit 来抵消你错误提交的 commit。
push后删除一些不该提交的文件

删除远程分支上的文件,同时也删除了本地仓库的文件:

git rm file 
git commit -m "test delete"   
git push origin branch name
删除远程分支上的文件,但同时保留本地仓库的文件
git rm --cached filename 
git commit -m "delete" 
git push origin branch name

删除远程分支上的文件夹,但同时保留本地仓库的文件夹及文件

git rm -r --cached directory
git commit -m "test"
git push origin branch name
利用分支的另一种做法

场景:
你进行了一些提交,然后意识到你开始checkout的是master分支。希望这些提交进入到另外一个特性(feature)分支。
方法:

git branch feature
git reset --hard origin/master
git checkout feature
原理:
你可能习惯用 git checkout -b <name>创建一个新的分支(这是创建新分支并马上checkout的流行捷径),但是你不希望马上切换分支。这里,git branch feature创建了一个叫做feature的新分支,并指向你最近的commit,但是还是让你checkout在master分支上。
下一步,在提交任何新的commit之前,用git reset --hard 把master分支倒回origin/master。不过别担心,那些commit还在feature分支里。

最后,用git checkout切换到新的feature分支,并让你最近所有的工作成果都完好无损。

参考:https://tonydeng.github.io/2015/07/08/how-to-undo-almost-anything-with-git/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值