git重新设置所有事件的基础
分支机构:git重新设置所有事件的基础,git,rebase,Git,Rebase,分支机构: 主人 特征 大师: 提交:“m1” function add(a, b){ return a + b; } 功能(基于“m1”提交): 提交:“f1” function add(a, b){ return a + b; } + function mult(a, b){ + return a * b; + } + let a = 5, b = 2, c = 10; + const result = mult(add(a, b), c); 打开主机: 承诺:“
- 主人
- 特征
function add(a, b){
return a + b;
}
功能(基于“m1”提交):
提交:“f1”
function add(a, b){
return a + b;
}
+ function mult(a, b){
+ return a * b;
+ }
+ let a = 5, b = 2, c = 10;
+ const result = mult(add(a, b), c);
打开主机:
承诺:“m2”
+ function addTo(a, b){
return a + b;
}
打开功能并键入“git rebase master”后
分支已提交(m1-m2-f1),文件更改如下:
function addTo(a, b){
return a + b;
}
function mult(a, b){
return a * b;
}
let a = 5, b = 2, c = 10;
const result = mult(add(a, b), c);
如您所见,仅在第1行将函数名从“add”更改为“addTo”,但是
最后一行相同函数的名称“add”未更改为“addTo”。所以代码不能正常工作。
有没有一种方法可以使用“rebase”或类似的smth更改函数名?简短的回答是否定的:rebase不知道语义,无法为您修复代码 较长的答案是,如果您有自动化测试,那么您可以使用这些自动化测试来检查rebase将进行的每个提交。当这些测试失败时,用户可以查看失败的提交 请记住,rebase的基本工作原理是将一些原始的提交序列复制到新的和(据说)改进的提交中。这相当于在每次普通(非合并)提交时使用
git cherry pick
一次一个(合并提交通常被完全删除)。同时,Git通常使用分支名称指向该分支中最后一次提交的事实来查找提交。每个提交,不管包含多少分支,都指向其父提交,这形成了一个向后看的提交链;链中的每个提交都可以复制
因此,git-rebase
可以通过以下方式“更改”分支:
git-rebase
时,可以添加-x命令
(或更长的拼写,--exec命令
)作为选项。这将在复制每个提交后运行所选命令。如果所选命令报告成功,1 rebase将像往常一样继续进行下一次提交。如果报告失败,则重新基础在此点停止,将控制权返回给人工
人类现在应该调查故障并进行任何必要的纠正。他/她/他们/代词可以根据需要运行测试,git添加
文件和git提交--amend
。问题解决后,他们可以git-rebase--continue
继续下一次提交
如果您有一个提供正确状态的测试套件,那么这个-x
技巧尤其有效。在这种特殊情况下,测试可以简单到运行make
,这通常会提供正确的状态,尽管实际测试是一个好主意
(不是每个人都会测试每个提交,有时没有足够的时间来测试,但在大多数情况下,你能塞进的测试越多越好。)
1“成功”表示退出0;失败表示退出状态为非零。嗯,除非您在虚拟机上,否则从C代码中使用0或1退出应该报告成功,只有从2开始的偶数应该报告失败。简短的回答是否定的:rebase不知道语义,无法为您修复代码 较长的答案是,如果您有自动化测试,那么您可以使用这些自动化测试来检查rebase将进行的每个提交。当这些测试失败时,用户可以查看失败的提交 请记住,rebase的基本工作原理是将一些原始的提交序列复制到新的和(据说)改进的提交中。这相当于在每次普通(非合并)提交时使用
git cherry pick
一次一个(合并提交通常被完全删除)。同时,Git通常使用分支名称指向该分支中最后一次提交的事实来查找提交。每个提交,不管包含多少分支,都指向其父提交,这形成了一个向后看的提交链;链中的每个提交都可以复制
因此,git-rebase
可以通过以下方式“更改”分支:
git-rebase
时,可以添加-x命令
(或更长的拼写,--exec命令
)作为选项。这将在复制每个提交后运行所选命令。如果所选命令报告成功,1 rebase将像往常一样继续进行下一次提交。如果报告失败,则重新基础在此点停止,将控制权返回给人工
人类现在应该调查故障并进行任何必要的纠正。他/她/他们/代词可以根据需要运行测试,git添加
文件和git提交--amend
。问题解决后,他们可以git-rebase--continue
继续下一次提交
如果您有一个提供正确状态的测试套件,那么这个-x
技巧尤其有效。在这种特殊情况下,测试可以简单到运行make
,这通常会提供正确的状态,尽管实际测试是一个好主意
(不是每个人都会测试每个提交,有时没有足够的时间来测试,但在大多数情况下,你能塞进的测试越多越好。)