在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”(除了这一切都是通过上下文差异和修补来完成的,如果这些行中或旁边发生了其他更改,则需要您的帮助来合并)。