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
在Github上将分支中还原的更改重新合并到主分支中?_Git_Github_Merge_Revert - Fatal编程技术网

在Github上将分支中还原的更改重新合并到主分支中?

在Github上将分支中还原的更改重新合并到主分支中?,git,github,merge,revert,Git,Github,Merge,Revert,我有两个分支,bb和master。我在bb上工作,做了一些更改,将它们推送到Github,并提出了一个pull请求,将其合并到master。然后,我看到一个生产应用程序出现了问题,并认为bb中的更改有问题,所以我单击了Github上的还原按钮 原来问题不在于代码,而在于bb中的更改所需的数据文件,我没有上传到服务器,所以我希望bb中的更改最终合并到master中。。。因此,我在bb中做了一个无意义的更改(添加了一些空格)以获得一个新的PR。但是PR只是针对空格,而不是针对bb中相对于master

我有两个分支,
bb
master
。我在
bb
上工作,做了一些更改,将它们推送到Github,并提出了一个pull请求,将其合并到
master
。然后,我看到一个生产应用程序出现了问题,并认为
bb
中的更改有问题,所以我单击了Github上的
还原
按钮

原来问题不在于代码,而在于
bb
中的更改所需的数据文件,我没有上传到服务器,所以我希望
bb
中的更改最终合并到master中。。。因此,我在
bb
中做了一个无意义的更改(添加了一些空格)以获得一个新的PR。但是PR只是针对空格,而不是针对
bb
中相对于
master
的所有其他更改。我合并了PR,但确实只应用了空格更改

所以现在Github有两个版本的文件
foo.py
,一个在
bb
中,一个在
master
中,当我尝试发出拉取请求时,它告诉我“没有什么可比较的。
master
bb
的所有提交都是最新的”。嗯


如何让Github将
bb
foo.py
的更改合并到
master
?(我认为它被抛弃了,因为它之前已经完全合并了这些更改…但是
master
foo.py
的当前状态与
bb
中的状态不同)

最简单的修复方法是前往终端。如果尚未签出项目,请签出该项目

git clone <url> my_project
cd my_project
git log (Find the id of the revert-- which is just a commit)
git revert (commit_id)
git克隆我的\u项目
cd my_项目
git日志(查找还原的id——这只是一个提交)
git还原(提交id)

然后将您的更改推送到bb,并为master创建一个pull请求

最简单的修复方法是前往终端。如果尚未签出项目,请签出该项目

git clone <url> my_project
cd my_project
git log (Find the id of the revert-- which is just a commit)
git revert (commit_id)
git克隆我的\u项目
cd my_项目
git日志(查找还原的id——这只是一个提交)
git还原(提交id)

然后将您的更改推送到bb,并为master创建一个pull请求

此时我无法恢复该恢复,因为其他分支上的工作人员已将更改推送到master,我会将其删除。妈的,我想我刚刚意识到了问题所在。问题是,
bb
中的更改比
master
中的更改旧。我现在唯一能想到的就是做一些真正的黑客行为,比如对一个空文件进行更改
foo.py
,提交并推送,然后将更改放回
foo.py
,我会得到我想要的PR。有更好的方法吗?从技术上讲,提交已经在master中了。您可以将master合并到分支中,然后进行更改。但我认为您最好创建一个新分支,然后再次进行更改。你可以选择提交,但是你最终会回到同一个地方。因为提交在master中。因此,要么合并主控并进行更改,要么在主控的基础上创建一个新分支并进行更改。您的更改将出现在文件的历史记录中。因此,我只需创建一个新分支,与我的旧提交进行比较,并获取更改。然后提交并推送。创建拉取请求,您就完成了。正确的答案实际上是还原还原。重要的是要认识到,
git revert
并不意味着“返回到
的状态”。Revert将给定的提交ID转换为修补程序,然后“反向应用”修补程序。因此,如果
中的更改是“删除文件X的第17行,更改文件Y的第5行,并将新的第9行添加到文件Z”,则恢复它意味着“将第17行放回X,取消对Y的更改5,删除Z中的9”(除了通过上下文差异和修补完成,如果这些行中或旁边有其他更改,则需要您的帮助进行合并)。我现在无法还原还原,因为其他分支上的其他人已将更改推给master,我会将其击垮。废话,我想我刚刚意识到了问题。问题是
bb
中的更改比
master
中的更改旧。我现在唯一能想到的是做一些真正的更改acky喜欢将
foo.py
更改为一个空文件并提交和推送,然后将更改放回
foo.py
中,我会得到我想要的PR。有更好的方法吗?从技术上讲,提交已经在master中。您可以将master合并到您的分支中,然后进行更改。但我认为您最好创建一个新的分支然后再次进行更改。您可以选择提交,但随后您将返回到同一位置。因为提交在主控中。因此,要么将主控合并并进行更改,要么在主控的基础上创建一个新分支并进行更改。您的更改将在文件的历史记录中。因此,我只需创建一个新分支并进行比较使用我以前的提交并抓取更改。然后提交并推送。创建拉取请求,您就完成了。正确的答案实际上是还原还原。重要的是要认识到,
git revert
并不意味着“返回到
的状态”。revert将给定的提交ID转换为补丁,然后“反向应用”因此,如果
中的更改是“删除文件X的第17行,更改文件Y的第5行,并将新的第9行添加到文件Z”,则恢复它意味着“将第17行放回X,取消Y中的更改5,删除Z中的9”(除了这一切都是通过上下文差异和修补来完成的,如果这些行中或旁边发生了其他更改,则需要您的帮助来合并)。