您的位置:首页 > 其它

Git的常用撤销技巧

2016-09-29 15:13 246 查看
撤销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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: