【发布时间】:2022-02-10 19:54:29
【问题描述】:
是否可以在 GitKraken 中将单个文件的更改恢复为较早的提交,而不是恢复整个提交?
【问题讨论】:
标签: gitkraken
是否可以在 GitKraken 中将单个文件的更改恢复为较早的提交,而不是恢复整个提交?
【问题讨论】:
标签: gitkraken
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 之前的提交。
【讨论】:
git checkout:右键单击“未暂存文件”下的文件并选择“丢弃变化”。也适用于文件夹。
您可以在 GitKraken UI 中完成此操作,但有点绕道:
这应该只为您要恢复的一个文件留下一个添加。提交它,现在你已经恢复了你的一个文件。
请注意,这可以跨多个提交工作,而不仅仅是一个......但由于它必须从所有这些提交中回滚所有内容,然后丢弃所有回滚(除了一个),它可能会很慢如果涉及巨大的变化。在这种情况下,最好按照 kowsky 的回答中的建议使用 git CI。
【讨论】:
虽然它并不严格涉及使用git 命令,但GitKraken 提供了在任何给定commit 可视化任何项目文件内容的可能性。
对单个文件进行操作时,复制/粘贴目标提交文件的内容可能比使用复杂的 git 命令容易得多,因为这很可能最终会弄乱整个项目的提交历史。
要实现这一点,只需:
当您只需要还原非常有限数量的文件时,简单而高效...
【讨论】:
您可以对最后一次提交进行 UNDO 编辑,然后进行强制推送以覆盖它。效果很好
【讨论】:
GitKraken 7.3.0(也可能是旧版本)确实允许在 UI 中的单个文件上有效地运行 git checkout:右键单击“未暂存文件”下的文件并选择“放弃更改”。也适用于文件夹。
(此答案以前是对已接受答案的评论)
【讨论】: