Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在文件的新提交版本中包含提交文件的旧版本的一部分_Git_Github - Fatal编程技术网

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

Git 在文件的新提交版本中包含提交文件的旧版本的一部分,git,github,Git,Github,我的问题涉及git以及如何正确使用它。我的知识很基础 我无意中删除了文件中的一个代码块,但只有在提交并推送到github后才意识到这一点。 在意识到这一点之前,我做了额外的有意识的改变,我也承诺并推动了这些改变。 现在,我想在文件的最新(提交)版本中包含非常规删除的代码块 (如何)这是可能的吗?既然您已经推送了提交,更改它有潜在的危险,因为可能有人已经签出了它,现在正在处理它。在新的提交中添加块会更干净 但是,可以获取代码块并将其包含在文件的最新版本中,但您必须以这种或那种方式创建新的提交 您没

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

我无意中删除了文件中的一个代码块,但只有在提交并推送到github后才意识到这一点。 在意识到这一点之前,我做了额外的有意识的改变,我也承诺并推动了这些改变。 现在,我想在文件的最新(提交)版本中包含非常规删除的代码块


(如何)这是可能的吗?

既然您已经推送了提交,更改它有潜在的危险,因为可能有人已经签出了它,现在正在处理它。在新的提交中添加块会更干净

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

您没有提到是否使用任何类型的GUI,所以我假设您通过命令行使用git

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

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

git reset HEAD~2
通过两次提交重置存储库。两次提交所引入的更改现在会显示在工作目录中。要恢复对要保留的区块的删除,可以通过以下方式撤消对整个文件的更改(如果没有其他更改)

git签出--
或者通过以下操作撤消对块的删除:

git checkout -p <filename>
git签出-p

并遵循屏幕上的说明。然后,您可以提交您的更改,可以作为一个提交,也可以像最初一样将更改分成两个。当您想要推送时,必须使用--force参数强制覆盖,因为您的历史记录与上游的历史记录不同。请注意,这有潜在的破坏性。

因为您已经推送了提交,所以更改它有潜在的危险,因为可能有人已经签出了它,现在正在处理它。在新的提交中添加块会更干净

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

您没有提到是否使用任何类型的GUI,所以我假设您通过命令行使用git

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

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

git reset HEAD~2
通过两次提交重置存储库。两次提交所引入的更改现在会显示在工作目录中。要恢复对要保留的区块的删除,可以通过以下方式撤消对整个文件的更改(如果没有其他更改)

git签出--
或者通过以下操作撤消对块的删除:

git checkout -p <filename>
git签出-p
并遵循屏幕上的说明。然后,您可以提交您的更改,可以作为一个提交,也可以像最初一样将更改分成两个。当您想要推送时,必须使用--force参数强制覆盖,因为您的历史记录与上游的历史记录不同。请注意,这具有潜在的破坏性