什么`git rebase --skip`在rebase期间跳过了什么?

tce*_*act 6 git

执行rebase时,如果git无法解决当前分支与新基本分支之间的差异,则会请求手动干预.

如果您解决冲突和类型git rebase --continue,git会将已解析的代码视为该提交的"新代码".

但是当你击中时会发生什么git rebase --skip?它不能保留代码 - 存在冲突 - 因此它必须做的不仅仅是"跳过".

Cod*_*ice 11

如果存在冲突,git rebase --skip只需跳过整个提交.在rebase成功完成后,该提交将不会出现在历史中.我们来看一个例子

A-B-C <- master
 \
  D-E <- foo
Run Code Online (Sandbox Code Playgroud)

现在说D之后会引发冲突

git checkout foo
git rebase master
Run Code Online (Sandbox Code Playgroud)

然后git rebase --skip结果

A-B-C <- master
     \
      E' <- foo
Run Code Online (Sandbox Code Playgroud)

其中E'包含与E相同的文本更改.

  • @adc17 请注意,每次提交都是自上次提交以来的一组增量更改。所有文件的本地副本是当前分支(如果没有签出分支,则为 HEAD)所有提交的累积。由于 E 不包含 D 的更改,因此 E' 也不包含。 (2认同)
  • 谢谢,这正是阻碍我的原因。所以听起来“git rebase --skip”更像是“git rebase --delete-commit-and-continue”。 (2认同)
  • @adc17“跳过”更合适,因为当`git rebase`在分支`foo`上复制每个提交时,我们告诉它跳过复制D。 (2认同)