mes*_*ali 47 git undo git-reset
我试图在git中撤消我的提交.使用危险git reset --hard HEAD~1吗?
不同选项有git reset什么区别?
Sas*_*olf 104
git reset确实知道五种"模式":软,混合,硬,合并和保持.我将从前三个开始,因为这些是您通常会遇到的模式.在那之后你会找到一个不错的奖金,敬请期待.
使用时,git reset --soft HEAD~1您将从当前分支中删除最后一次提交,但文件更改将保留在您的工作树中.此外,更改将保留在您的索引上,因此使用a git commit将创建一个提交,其更改与您之前"删除"的提交完全相同.
这是默认模式,与soft非常相似.当您"删除"提交时,git reset HEAD~1仍会保留工作树中的更改,但不会保留索引; 因此,如果要"重做"提交,则必须在提交git add之前添加更改().
使用时,除了上次提交中引入的更改之外,git reset --hard HEAD~1您将丢失所有未经修改的更改.更改将不会保留在您的工作树中,因此执行git status命令将告诉您存储库中没有任何更改.
仔细踩这个.如果您不小心删除了从未跟踪过的未提及的更改git(发言:已提交或至少已添加到索引中),则无法使用它们git.
git reset --keep HEAD~1是一个有趣和有用的.它仅重置当前 HEAD和给定提交之间不同的文件.如果这些文件中的任何一个具有未更改的更改,则会中止重置.它基本上是一个更安全的版本hard.
当您进行大量更改并希望切换到不同的分支而不会丢失这些更改时,此模式特别有用 - 例如,当您开始处理错误的分支时.
您可以在git reset文档中阅读更多相关信息.
注意
当git reset删除提交时,提交并没有真正丢失,只有没有引用指向它或它的任何子进程.你仍然可以git reset通过找到它的SHA-1密钥来恢复被"删除"的提交,例如使用诸如的命令git reflog.
apa*_*ana 10
Git 重置有 5 种主要模式:软、混合、合并、硬、保持。它们之间的区别是改变或不改变head, stage (index), working directory。
Git reset --hard 将改变头、索引和工作目录。
Git reset --soft 只会改变头部。索引、工作目录没有变化。
所以换句话说,如果你想撤销你的提交, --soft 应该足够好。但是在那之后,您的索引和工作目录中仍然有来自错误提交的更改。您可以修改文件,修复它们,将它们添加到索引并再次提交。
使用--hard,您的项目将完全干净利落。就好像上次提交没有任何变化一样。如果您确定这是您想要的,那么继续前进。但是一旦你这样做,你将完全失去你的最后一次提交。(注意:仍有办法恢复丢失的提交)。
小智 5
这篇有用的文章以图形方式显示了reset命令的说明。
http://git-scm.com/blog/2011/07/11/reset.html
Reset --hard可能非常危险,因为它会在不检查的情况下覆盖您的工作副本,因此,如果您根本没有提交文件,则文件将消失。
至于源代码树,我没有办法撤消提交。无论如何,它很可能会在掩护下使用reset
| 归档时间: |
|
| 查看次数: |
90536 次 |
| 最近记录: |