从GitHub.com上的受保护分支恢复合并提交

时间:2017-03-02 07:03:01

标签: git github merge protected git-revert

我们已经在GitHub上保护了我们的开发分支,以便下游没有人可以直接推送他们的提交。提交需要通过特定的功能分支并通过拉取请求合并。

出现了一个场景,其中一个功能分支被合并到开发分支中(经过适当的审查和更改之后),我们需要稍后恢复(可能是由于需求的变化)。如果我尝试恢复下游的合并提交,它将不允许我推送,因为分支受到保护。我记得GitHub在合并分支时提供了恢复按钮。但不知怎的,我现在无法看到(或找到)按钮。我们需要恢复优先级提交,因此我们暂时从开发分支中删除了保护并推送了恢复提交(最丑陋)。

还有其他更好的替代方法可以从受保护的分支恢复提交吗?也许我错过了或误解了一些GitHub功能。

还有一个场景是,如果我在合并之后从GitHub中删除了分支,那么我将如何将其恢复呢?

2 个答案:

答案 0 :(得分:6)

还原GitHub

您不需要在GitHub上恢复(取消删除)分支以恢复由请求引起的合并提交。例如:

Revertable pull request

不可撤销的拉取请求

有时恢复按钮不会出现。来自reverting a pull request的GitHub帮助:

  

注意:如果出现以下情况,您可能需要使用Git手动恢复单个提交:

     
      
  • 恢复拉取请求会导致合并冲突
  •   
  • 原始拉取请求最初未在GitHub上合并(例如,在命令行上使用快进合并)
  •   

我花了一段时间才找到一个例子,但是如果使用GitHub上的绿色大按钮将头部分支合并到基本分支中,那么它就无法在GitHub上恢复:

Non-revertable pull request

git revert

在命令行的本地,您可以使用git revert命令还原更改。

这将适用于受保护的分支和下游分支。 git revert在当前HEAD之前创建一个新提交,因此您不需要强制推送,如果来自下游分支,您可以手动为恢复的更改创建拉取请求。

恢复合并提交比恢复单父提交稍微复杂一些,因此我建议您查看this question以获取更多信息,因为它是我的'从来没有做过。

如果人们不习惯使用命令行,我认为SourceTree在上下文菜单中有一个项目可以恢复提交,但我不知道它如何处理合并提交。其他GUI应用程序中可能有类似的选项。

希望这有帮助!

答案 1 :(得分:0)

最简单的选择是执行以下操作

CREATE PROCEDURE sp_cat_order_report_gen_meor
begin 
LOAD DATA LOCAL INFILE 'C:\\Users\\VikasK\\Downloads\\vikas\\FINRACATReportableEquitySecurities_EOD.txt'
INTO TABLE tbl_catreportableeqsymbolmaster
FIELDS TERMINATED BY '|' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
SET tbl_catreportableeqsymbolmaster.symbolid =null ;
END 
//
delimiter ;
相关问题