如何修复遭遇错误合并的拉取请求分支?

时间:2016-01-13 13:03:36

标签: git github git-merge pull-request

我有一个pull请求分支,只包括15个提交,在合并错误(或者坏的rebase)之后,已经合并到master中的提交在GitHub上显示为新提交。

在第三方分支合并到主服务器之前,当第三方分支合并到pull请求分支时,可能会创建这些提交。

无论我需要清理这个pull请求分支,以便只在提交和文件中显示GitHub,这些特定于pull请求分支本身的15个提交。

你有任何提示和技巧来实现这一目标吗?在过去,我只是简单地选择了我知道的提交请求分支到一个新的分支。然后我删除了原始的pull请求分支,重命名了与原始pull请求分支同名的新分支,并强制将该分支推送到GitHub,从而产生干净的差异。

然而,这种技术在具有许多协作者的长期运行分支上并不理想,因为由于在原始拉取请求分支的生命周期中进行合并,因此确定哪些提交对于分支是独占的。 / p>

2 个答案:

答案 0 :(得分:1)

Rebase删除合并提交作为流程的一部分。

这可能是你最好的清理方法 - 将拉动请求分支转换为主人。

我建议创建一个一次性分支来测试rebase。

  • git checkout pull-request-branch
  • git checkout -b rebase-test
  • git rebase master rebase-test

这样您就可以选择将生成的rebase-test分支与主pull-request-branch区分开,以确保您获得所需的结果。

答案 1 :(得分:1)

当我需要删除分支上的多个提交时,我使用交互式rebase

git show-branch

然后您只需评论您不想重播的提交(或删除行)。

如果您需要查找两个分支共有的提交,可以使用git reset

除此之外,当您需要使用独占的提交子集拆分多个分支时,交互式rebase对function Add-ColumnAfterMatchingColumn{ [CmdletBinding()] param( [string]$MainFile, [string]$MatchingFile, [string]$MatchColumnName, [string]$MatchingColumnName ) # Import data from two files $file1 = Import-Csv -Path $MainFile $file2 = Import-Csv -Path $MatchingFile # Find column names and order them $columnnames = $file2 | gm | where {$_.MemberType -like "NoteProperty"} | Select Name | %{$_.Name} [array]::Reverse($columnnames) # Find $MatchColumnName index and put the $MatchingColumnName after it $MatchColumnNameIndex = [array]::IndexOf($columnnames, $MatchColumnName) if($MatchColumnNameIndex -eq -1){ $MatchColumnNameIndex = 0 } $columnnames = $columnnames[0..$MatchColumnNameIndex] + $MatchingColumnName + $columnnames[($MatchColumnNameIndex+1)..($columnnames.Length -1)] $returnObject = @() foreach ($item in $file2){ # Find corresponding value MatchingColumnName in $file1 and add it to the current item $item | Add-Member -Name "$MatchingColumnName" -Value ($file1 | ?{$_."$($MatchColumnName)" -eq $item."$($MatchColumnName)"})."$MatchingColumnName" -MemberType NoteProperty # Add current item to the returnObject array, in the correct order $newItem = New-Object psobject foreach ($columnname in [string[]]$columnnames){ $newItem | Add-Member -Name $columnname -Value $item."$columnname" -MemberType NoteProperty } $returnObject += $newItem } return $returnObject } 非常有用。