假设我有五个修改过的文件,并且我将它们中的两个放在了commit处(我们称之为commit A)。然后,我仍然有三个未提交的更改留给未来的提交。现在假设在将来某个时候我决定将我的工作目录恢复为提交A,那么这些文件的状态将不会提交给A,而是会被修改。这些变化会丢失吗?Git阶段和提交 - 恢复时未提交的文件会发生什么?
回答
A git revert
只会修改正在恢复的commitA
的文件。
它不会触及任何其他文件。
这就是说,这可能是一个好主意,以保存这些文件,只是为了确保(git stash
)没有发生任何事情“出错”。
无论您当前的分段情况如何,提交'A'的'还原'仅会在顶部创建一个新的提交(例如A *),这会反转提交A的影响。您需要启动使用干净的工作目录恢复进程(即隐藏或提交修改/暂存的文件)。
好吧,通过将更改恢复到索引来恢复工作。因此,如果没有进一步确定实际发生的上演和未上演的变化,他们就不会“参与”,这似乎是过分简单的。 – 2014-09-21 13:10:27
正确。实际上,如果存在任何分步或修改的文件(编辑我的答案),'git revert'将会被阻止。 – FractalSpace 2014-09-21 15:01:58
所以如果我理解正确,我的工作副本将被更改以反映提交A中的更改,但其他文件中的部分工作不会显示出来?即无法恢复其他文件中的部分工作。这意味着在恢复之后,我的非工作副本并不是早期工作副本的确切复制。 (我明白我的期望可能并不完全可行......) – deepak 2014-09-21 15:38:50
- 1. 恢复git提交
- 2. Git:恢复旧的提交
- 3. Git恢复本地提交
- 4. GIT:恢复上次提交?
- 5. 为什么Git合并不会自动生成提交和提交消息?
- 6. MSMQ事务未提交/中止时会发生什么?
- 7. Git更改没有提交提交和未跟踪文件
- 8. 从git分支留下的提交会发生什么-D
- 9. Git - 恢复丢失的提交
- 10. 恢复git中的一系列提交
- 11. 恢复git中的多次提交
- 12. 什么时候使用XA数据源和两阶段提交
- 13. 告诉Git提交是否合并/恢复提交
- 14. 如何恢复从git提交更改?
- 15. Git + Intellij - 如何恢复本地提交?
- 16. 恢复丢失远程git提交
- 17. 从多个git rebases恢复“旧提交”
- 18. 如何恢复本地提交git
- 19. Git合并主无需恢复提交
- 20. 恢复Git仓库/提交等
- 21. Oracle RMAN备份中未提交的事务会发生什么
- 22. 如果未提交,此SQL中的事务会发生什么?
- 23. 未提交的sql语句会发生什么?
- 24. Paxos vs两阶段提交
- 25. 在Oracle 10g中发布提交语句时会发生什么?
- 26. 从提交恢复特定文件
- 27. Spark任务集并发阶段提交
- 28. 提交后使用Git恢复已删除的文件夹
- 29. 使用Lucene NRT时提交时会发生什么
- 30. 恢复git回购倒数第二次提交,同时抛弃上次提交
如果您在问题中使用特定命令而不是使用其他版本控制系统的随机术语,会更好。我只能猜测你在说'git reset',你可以通过指定'--soft',' - mix'或'--hard'来明确地选择索引和工作树会发生什么。 – 2014-09-21 15:08:44
同意; “恢复”在Git中是一个精确的术语,但通常用于表示更多类似于该工具的新用户的“重置”。你能描述一下你想要做的更详细的事情吗? – 2014-09-21 16:03:47
@EdwardThomson在这里发表评论以及那些由FractalSpace提供的答案,我认为我已经开始融合到这样的理解:我一直在想的是git reset,而不是回复。 – deepak 2014-09-23 13:26:45