16

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

4

6 回答 6

23

回答

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

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

通过命令行重置单个文件

git checkout <commit> <file>

签出文件的先前版本。这会将<file>驻留在工作目录中的内容转换为来自工作目录的内容的精确副本, <commit>并将其添加到暂存区域。

文档可以在这里找到。

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

于 2017-04-07T10:38:03.240 回答
12

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

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

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

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

于 2018-05-01T05:34:29.347 回答
2

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

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

要实现这一点,只需:

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

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

于 2020-08-27T14:37:40.557 回答
0

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

于 2019-05-08T14:35:01.503 回答
0

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

恢复

于 2021-05-12T04:51:05.423 回答
0

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

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

于 2022-02-10T11:54:29.087 回答