在 GitKraken 中还原一个文件

Reverting one file in GitKraken

在 GitKraken 中是否可以将单个文件的更改还原到较早的提交而不是还原整个提交?

回答

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

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

通过命令行重置单个文件

git checkout <commit> <file>

Check out a previous version of a file. This turns the <file> that resides in the working directory into an exact copy of the one from <commit> and adds it to the staging area.

可以找到文档 here

git checkout HEAD~1 <filename> 因此会将单个文件重置为当前 HEAD.

之前的提交

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

  • 将最近的提交还原到文件被删除的位置,但是当 GitKraken 询问您是否要立即提交还原时,请单击否。
  • 取消暂存所有更改
  • 仅暂存您要恢复的文件的添加
  • 在 Unstaged 中右击,然后 Discard all

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

请注意,这可以适用于多个提交,而不仅仅是一个...但是因为它必须回滚所有这些提交的所有内容,然后丢弃所有回滚(一个除外)它可以是如果涉及大量更改,则速度会很慢。在这种情况下,最好按照 kowsky 的回答中的建议使用 git CI。

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

虽然它并不严格涉及使用 git 命令,但 GitKraken 提供了在任何给定 commit.

可视化任何项目文件内容的可能性

在对单个文件进行操作时,copy/paste 目标提交文件的内容可能比使用复杂的 git 命令容易得多,后者很可能最终会弄乱整个项目的提交历史。

要实现这一点,只需:

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

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

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

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

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