在新提交的文件版本中包含旧版本的已提交文件的一部分

时间:2017-02-21 10:36:56

标签: git github

我的问题涉及git以及如何正确使用它。我的知识非常基础。

我不小心删除了我文件中的代码块,但是在提交并推送到github后才意识到这一点。 在实现之前,我做了其他有意改变,我也承诺并推动。 现在,我想在我文件的最新(已提交)版本中包含uninentionally删除的代码块。

(如何)可以实现?

1 个答案:

答案 0 :(得分:2)

由于你已经推送了你的提交,因此改变它是有潜在危险的,因为有人可能已经检查过它并且现在正在处理它。在新提交中添加块会更清晰。

然而,可以获取代码块并将其包含在文件的最新版本中,但是您必须以某种方式创建新的提交。

您没有提及是否使用任何类型的GUI,因此我假设您通过命令行使用git。

选项1:要在旧提交之上将其添加为新提交,请使用您选择的工具显示您的存储库历史记录(这将是命令行上的gitk),找到之前的提交,复制已删除的块,将其粘贴到当前代码中并提交并推送新添加的块。

选项2:要返回您的存储库历史记录并首先更改删除,您可以使用

git reset HEAD~2

通过两次提交重置您的存储库。您的两个提交所引入的更改现在显示在您的工作目录中的非分段更改。要恢复删除要保留的块,可以通过

撤消整个文件中的更改(如果没有其他更改)
git checkout -- <filename>

或仅撤消

删除块
git checkout -p <filename>

并按照屏幕说明进行操作。然后,您可以将更改作为一个提交提交,也可以分为两个提交,因为它们是最初的。如果要推送,则必须使用--force参数强制覆盖,因为您的历史记录与上游的历史记录不同。请注意,这可能具有潜在的破坏性。