Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git重新设置所有事件的基础_Git_Rebase - Fatal编程技术网

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); 打开主机: 承诺:“

分支机构:

  • 主人
  • 特征
大师: 提交:“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);
打开主机: 承诺:“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
可以通过以下方式“更改”分支:

  • 列出要复制的提交(其哈希ID)。此列表以分支名称标识的提交结束
  • 将特定的rebase目标提交作为分离头检出
  • 使用cherry pick或等效工具从步骤1中的列表中一次复制一个提交
  • 移动分支名称,使其标识最终复制的提交,并重新附加头
  • 运行
    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
    可以通过以下方式“更改”分支:

  • 列出要复制的提交(其哈希ID)。此列表以分支名称标识的提交结束
  • 将特定的rebase目标提交作为分离头检出
  • 使用cherry pick或等效工具从步骤1中的列表中一次复制一个提交
  • 移动分支名称,使其标识最终复制的提交,并重新附加头
  • 运行
    git-rebase
    时,可以添加
    -x命令
    (或更长的拼写,
    --exec命令
    )作为选项。这将在复制每个提交后运行所选命令。如果所选命令报告成功,1 rebase将像往常一样继续进行下一次提交。如果报告失败,则重新基础在此点停止,将控制权返回给人工

    人类现在应该调查故障并进行任何必要的纠正。他/她/他们/代词可以根据需要运行测试,
    git添加
    文件和
    git提交--amend
    。问题解决后,他们可以
    git-rebase--continue
    继续下一次提交

    如果您有一个提供正确状态的测试套件,那么这个
    -x
    技巧尤其有效。在这种特殊情况下,测试可以简单到运行
    make
    ,这通常会提供正确的状态,尽管实际测试是一个好主意

    (不是每个人都会测试每个提交,有时没有足够的时间来测试,但在大多数情况下,你能塞进的测试越多越好。)