【问题标题】:Right way to discard changes in Git在 Git 中丢弃更改的正确方法
【发布时间】:2012-08-14 18:43:17
【问题描述】:

我见过许多使用 Git 丢弃更改/恢复到先前提交的不同方法。我通常可以弄清楚哪种方法适合我的情况,但在此过程中,我对不同的方法感到非常困惑。最近我试图撤消一些文件重命名,无论我多么努力地尝试git checkout旧版本的文件,我仍然无法恢复我的旧文件。

我正在寻找有关使用哪种方法以及原因的说明。这是我对几种方法的理解。我意识到答案可能与上下文相关,但我想尝试找出哪些上下文需要哪些方法。


1)git checkout -- .

  • 用于检出最新版本的文件,会覆盖旧文件,但不会影响已删除、重命名或新文件。

2)git stash save --keep-index 后跟 git stash drop

  • 隐藏未提交的文件,然后完全删除它们。如果您已经提交了想要保留的更改和想要放弃的未提交/未暂存的更改,这是一种很好的方法。

3)git reset --hard

  • 清除自上次提交以来的所有内容,包括文件重命名、删除和添加。

这是我目前对我的选择的理解。你会对我的解释有什么改变吗?我也不确定何时使用git revert 代替上述命令。

来源帖子:

【问题讨论】:

    标签: git branch rollback git-reset


    【解决方案1】:
    git stash -u
    

    是首选方式。不要掉。他们不会被推。如果您确实删除了您发现的重要内容,您可以将它们取回。

    您的其他选择具有破坏性。

    Revert 是在历史记录中添加一个新的提交,它应用与提交引入的补丁相反的内容。您在此处的选择是针对您想要对尚未成为历史一部分的工作树中的更改执行的操作。 Revert 适用于作为历史记录一部分的已提交更改。

    【讨论】:

    • -u 是做什么的?我真的不想用我不需要的代码填满我的存储堆栈。
    • 不用担心会填满你的存储空间。 -u 除了已跟踪的文件外,还隐藏未跟踪的文件。它允许它表现得像 reset 一样。
    猜你喜欢
    • 2019-01-14
    • 2010-12-07
    • 1970-01-01
    • 2015-03-08
    • 2020-06-01
    • 1970-01-01
    • 2014-01-24
    • 2016-10-28
    相关资源
    最近更新 更多