如果你在使用电脑时无意将私人信息传播出去了,该怎么撤回呢?很多人都会有这种困扰,因为自己的一时疏忽,很有可能造成不必要的影响,现在Linux系统中有个Git撤销设置,可以在Git里面撤销掉一些错误的操作,因为你每次操作电脑的时候,git都会保存之前的快照,想要撤销之前的步骤的话只要删除就可以了 。下面小编就和大家分享这个操作方法,Linux系统如何在Git里撤销操作 。
当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照;之后,你可以利用 Git 返回到你的项目的一个早期版本 。
在本篇博文里,我会讲解某些你需要“撤销”已做出的修改的常见场景,以及利用 Git 进行这些操作的最佳方法 。
撤销一个“已公开”的改变
场景: 你已经执行了 git push,把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销那一个 commit.
方法: git revert 《SHA》
原理: git revert 会产生一个新的 commit,它和指定 SHA 对应的 commit 是相反的(或者说是反转的) 。如果原先的 commit 是“物质”,新的 commit 就是“反物质” — 任何从原先的 commit 里删除的内容会在新的 commit 里被加回去,任何在原先的 commit 里加入的内容会在新的 commit 里被删除 。
这是 Git 最安全、最基本的撤销场景,因为它并不会改变历史 — 所以你现在可以 git push 新的“反转” commit 来抵消你错误提交的 commit 。
修正最后一个 commit 消息
场景: 你在最后一条 commit 消息里有个笔误,已经执行了 git commit -m “Fxies bug #42”,但在 git push 之前你意识到消息应该是 “Fixes bug #42″ 。
方法: git commit --amend 或 git commit --amend -m “Fixes bug #42”
原理: git commit --amend 会用一个新的 commit 更新并替换最近的 commit,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来 。如果当前没有提出任何修改,这个操作就只会把上次的 commit 消息重写一遍 。
撤销“本地的”修改
场景: 一只猫从键盘上走过,无意中保存了修改,然后破坏了编辑器 。不过,你还没有 commit 这些修改 。你想要恢复被修改文件里的所有内容 — 就像上次 commit 的时候一模一样 。
方法: git checkout -- 《bad filename》
原理: git checkout 会把工作目录里的文件修改到 Git 之前记录的某个状态 。你可以提供一个你想返回的分支名或特定 SHA,或者在缺省情况下,Git 会认为你希望 checkout 的是 HEAD,当前 checkout 分支的最后一次 commit 。
记住:你用这种方法“撤销”的任何修改真的会完全消失 。因为它们从来没有被提交过,所以之后 Git 也无法帮助我们恢复它们 。你要确保自己了解你在这个操作里扔掉的东西是什么!(也许可以先利用 git diff 确认一下)
重置“本地的”修改
场景: 你在本地提交了一些东西(还没有 push),但是所有这些东西都很糟糕,你希望撤销前面的三次提交 — 就像它们从来没有发生过一样 。
方法: git reset 《last good SHA》 或 git reset --hard 《last good SHA》
原理: git reset 会把你的代码库历史返回到指定的 SHA 状态 。这样就像是这些提交从来没有发生过 。缺省情况下,git reset 会保留工作目录 。这样,提交是没有了,但是修改内容还在磁盘上 。这是一种安全的选择,但通常我们会希望一步就“撤销”提交以及修改内容 — 这就是 --hard 选项的功能 。
在撤销“本地修改”之后再恢复
场景: 你提交了几个 commit,然后用 git reset --hard 撤销了这些修改(见上一段),接着你又意识到:你希望还原这些修改!
推荐阅读
- win8系统下玩游戏出现卡顿的解决方法
- Win8系统无法同时在新窗口中打开多个文件夹的解决方法教程
- gps的作用 gps是做什么的
- win8.1系统查看当前版本是否升级为pdata版的方法
- Longhorn系统更多细节曝光
- win8忘记开机密码怎么办 win8重置系统的方法
- 如何调整xp系统电脑屏幕分辨率的技巧
- 微软将针对Longhorn系统设计其搜索功能
- 松下的波轮洗衣机好吗
- 雾锁山头山锁雾的下一句 雾锁山头山锁雾的对联