【问题标题】:Reverting one file in GitKraken在 GitKraken 中恢复一个文件
【发布时间】:2022-02-10 19:54:29
【问题描述】:

是否可以在 GitKraken 中将单个文件的更改恢复为较早的提交,而不是恢复整个提交?

【问题讨论】:

    标签: gitkraken


    【解决方案1】:

    回答

    git 意义上的revert 只能在提交时执行。它引入了一个新的提交,它完全否定了恢复的提交的更改。见here。 GitKraken 支持这一点:右键单击提交,Revert <branch> to this commit

    但是,您想要完成的任务可以通过git checkout 完成。我认为 GitKraken 还不支持单个文件的这种功能。但是,您可以使用命令行。

    通过命令行重置单个文件

    git checkout <commit> <file>

    查看文件的先前版本。这使<file> 驻留在工作目录中,复制到来自 <commit> 并将其添加到暂存区。

    文档可以在here找到。

    git checkout HEAD~1 <filename> 将因此将单个文件重置为当前HEAD 之前的提交。

    【讨论】:

    • FWIW,GitKraken 7.3.0(也可能是旧版本)确实允许在 UI 中的单个文件上有效运行git checkout:右键单击“未暂存文件”下的文件并选择“丢弃变化”。也适用于文件夹。
    • TortoiseGit(仅限 Windows)可以轻松做到这一点。右键单击选定的文件,选择“恢复到此版本”或“恢复到父版本”。
    • 女士们,先生们,这就是 TortoiseGit 让人们感到困惑的原因:使用与使用 git 的其他人不同的措辞。
    • 这在SourceTree中也很容易做到。这是 GitKraken 中缺少的功能。
    • @KristofferSjöö 您应该将该评论添加为答案,因为这是原始问题的真正正确答案。
    【解决方案2】:

    您可以在 GitKraken UI 中完成此操作,但有点绕道:

    • 将最近的提交恢复到文件被删除的位置,但是当 GitKraken 询问您是否要立即提交恢复时,单击否。
    • 取消暂存所有更改
    • 仅为您尝试恢复的文件暂存添加
    • 在 Unstaged 中右键单击,然后全部丢弃

    这应该只为您要恢复的一个文件留下一个添加。提交它,现在你已经恢复了你的一个文件。

    请注意,这可以跨多个提交工作,而不仅仅是一个......但由于它必须从所有这些提交中回滚所有内容,然后丢弃所有回滚(除了一个),它可能会很慢如果涉及巨大的变化。在这种情况下,最好按照 kowsky 的回答中的建议使用 git CI。

    【讨论】:

    • 我是新手......当我进行还原时,它失败了......说发现冲突试图合并到主人 - 即使我点击了否。 ??
    • @YogiBear 这看起来确实很奇怪。在尝试还原之前,您是否有任何未提交的更改?它可能会在未提交的更改和它正在恢复的内容之间发生冲突。
    • SourceTree 支持此功能。您不仅可以反转单个文件,还可以选择和反转单个大块和行。
    • 不错的战术,伙计
    【解决方案3】:

    虽然它并不严格涉及使用git 命令,但GitKraken 提供了在任何给定commit 可视化任何项目文件内容的可能性。

    对单个文件进行操作时,复制/粘贴目标提交文件的内容可能比使用复杂的 git 命令容易得多,因为这很可能最终会弄乱整个项目的提交历史。

    要实现这一点,只需:

    • 在 GitKraken 中打开您的 git 项目
    • 在提交历史记录行中单击所需的提交
    • 在右侧面板中,选中查看所有文件复选框
    • 找到所需的项目文件并单击它
    • 文件内容将显示在主面板中
    • 您现在可以复制/粘贴内容

    当您只需要还原非常有限数量的文件时,简单而高效...

    【讨论】:

      【解决方案4】:

      您可以对最后一次提交进行 UNDO 编辑,然后进行强制推送以覆盖它。效果很好

      【讨论】:

        【解决方案5】:

        希望 GitKraken 可以做到这一点,就像“TortoiseGit”一样。

        【讨论】:

          【解决方案6】:

          GitKraken 7.3.0(也可能是旧版本)确实允许在 UI 中的单个文件上有效地运行 git checkout:右键单击“未暂存文件”下的文件并选择“放弃更改”。也适用于文件夹。

          (此答案以前是对已接受答案的评论)

          【讨论】:

            猜你喜欢
            • 2019-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 1970-01-01
            • 2018-04-11
            • 2013-06-12
            相关资源
            最近更新 更多