我有一个pull请求分支,只包括15个提交,在合并错误(或者坏的rebase)之后,已经合并到master中的提交在GitHub上显示为新提交。
在第三方分支合并到主服务器之前,当第三方分支合并到pull请求分支时,可能会创建这些提交。
无论我需要清理这个pull请求分支,以便只在提交和文件中显示GitHub,这些特定于pull请求分支本身的15个提交。
你有任何提示和技巧来实现这一目标吗?在过去,我只是简单地选择了我知道的提交请求分支到一个新的分支。然后我删除了原始的pull请求分支,重命名了与原始pull请求分支同名的新分支,并强制将该分支推送到GitHub,从而产生干净的差异。
然而,这种技术在具有许多协作者的长期运行分支上并不理想,因为由于在原始拉取请求分支的生命周期中进行合并,因此确定哪些提交对于分支是独占的。 / p>
答案 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
}
非常有用。