在 GitKraken 中是否可以将单个文件的更改恢复到较早的提交,而不是恢复整个提交?
6 回答
回答
git 意义上的Arevert
只能在提交时执行。它引入了一个新的提交,它完全否定了恢复的提交的更改。见这里。GitKraken 支持这一点:右键单击提交,Revert <branch> to this commit
.
但是,您想要完成的任务可以通过git checkout
. 我认为 GitKraken 还不支持单个文件的这种功能。但是,您可以使用命令行。
通过命令行重置单个文件
git checkout <commit> <file>
签出文件的先前版本。这会将
<file>
驻留在工作目录中的内容转换为来自工作目录的内容的精确副本,<commit>
并将其添加到暂存区域。
文档可以在这里找到。
git checkout HEAD~1 <filename>
因此会将单个文件重置为当前HEAD
.
您可以在 GitKraken UI 中完成此操作,但这有点绕道:
- 将最近的提交恢复到文件被删除的位置,但是当 GitKraken 询问您是否要立即提交恢复时,请单击否。
- 取消暂存所有更改
- 仅暂存您尝试恢复的文件的添加
- 右键单击Unstaged,然后丢弃所有
这应该只为您要恢复的一个文件留下一个添加。提交它,现在你已经恢复了你的一个文件。
请注意,这可以在多个提交中起作用,而不仅仅是一个......但是由于它必须从所有这些提交中回滚所有内容,然后丢弃所有回滚(除了一个),如果涉及大量提交,它可能会非常慢变化。在这种情况下,最好按照 kowsky 的回答中的建议使用 git CI。
尽管它并不严格涉及使用git
命令,但 GitKraken 提供了在任何给定的commit
.
在对单个文件进行操作时,复制/粘贴目标提交文件的内容可能比使用git
可能最终弄乱整个项目的提交历史的复杂命令要容易得多。
要实现这一点,只需:
- 在 GitKraken 中打开你的 git 项目
- 在提交历史记录行中单击所需的提交
- 在右侧面板中,选中查看所有文件复选框
- 找到所需的项目文件并单击它
- 文件内容将显示在主面板中
- 您现在可以复制/粘贴内容
当您只需要还原非常有限数量的文件时,简单而高效......
您可以对最后一次提交进行 UNDO 编辑,然后进行强制推送以覆盖它。效果很好
GitKraken 7.3.0(也可能是旧版本)确实允许在 UI 中的单个文件上有效地运行 git checkout:右键单击“未暂存文件”下的文件并选择“放弃更改”。也适用于文件夹。
(此答案以前是对已接受答案的评论)