我在待办事项中有以下内容git rebase -i HEAD~2:
pick 56bcce7 Closes #2774
pick e43ceba Lint.py: Replace deprecated link
# Rebase 684f917..e43ceba onto 684f917 (2 command(s))
#
...
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试压缩第一个(56bcce7)并通过在第一个之前添加"s"来选择第二个时,我得到以下错误:
Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下它的含义,我该怎么做?
我想压缩第一个commit(56bcce7)和"select and reword"第二个(e43ceba)提交
Leo*_*eon 62
交互式rebase以与您习惯使用时相反的顺序呈现提交git log.git rebase -i以保存的rebase指令文件中列出的完全(自上而下)顺序重放所选提交.当压缩时,选择用于压缩的提交与(编辑的)列表中的提交相结合,即来自前一行的提交.在你的情况下 - 没有以前的提交 56bcce7.您必须执行以下操作之一
git rebase -i HEAD~3(如果你想挤进56bcce7去684f917)如果您想要56bcce7与之结合e43ceba,而e43ceba不是依赖于56bcce7它们,那么只需重新排序:
r e43ceba Lint.py: Replace deprecated link
s 56bcce7 Closes #2774
Run Code Online (Sandbox Code Playgroud)
更新:Gus的回答提示了一种更好的方法,无需重新排序两个提交:
r 56bcce7 Closes #2774
s e43ceba Lint.py: Replace deprecated link
Run Code Online (Sandbox Code Playgroud)
这将把两个提交压缩/合并为一个.当交互式rebase请求重写的提交消息时56bcce7,提供描述56bcce7和的并集的提交消息e43ceba.
Gus*_*Gus 58
我遇到了类似的问题,我解决了如下问题:
这是我想要压缩的提交组:
1 s 01cc5a08 Removes open div
2 s a2b6eecf Restores old fonts
3 s 603479ff Cleans left out div
4 pick 5afdbc33 Update: show logo on landing page
5 s 04c1cb13 change version of dev and prod from 1 to 2
6 s bbe6a8f8 Update: show logo on landing page if they have one
7 s c0d6008a Adds check for C users
Run Code Online (Sandbox Code Playgroud)
如你所见,我不想.4,但是1,2和3之前没有承诺过压入.因此,如果没有先前的提交错误,就无法"压缩".
我的解决方案是使用r选项# r, reword = use commit, but edit the commit message
所以我的提交列表看起来像这样:
1 r 01cc5a08 Removes open div
2 s a2b6eecf Restores old fonts
3 s 603479ff Cleans left out div
4 s 5afdbc33 Update: show logo on landing page
5 s 04c1cb13 change version of dev and prod from 1 to 2
6 s bbe6a8f8 Update: show logo on landing page if they have one
7 s c0d6008a Adds check for C users
Run Code Online (Sandbox Code Playgroud)
保存后,交互式shell会询问我所选提交的重写.
之后,我的提交日志导致了一次提交,从而产生了更清晰的提交历史记录.
我遇到了这个问题,而在我的情况下发生的原因是,您不能将较早的提交压缩为新的提交。这是一个示例,说您有3次提交:
1 pick 01mn9h78 The lastest commit
2 pick a2b6pcfr A commit before the latest
3 pick 093479uf An old commit i made a while back
Run Code Online (Sandbox Code Playgroud)
现在,如果你说git rebase -i HEAD~3,你做类似的事情
1 pick 01mn9h78 The lastest commit
2 s a2b6pcfr A commit before the latest
3 s 093479uf An old commit i made a while back
Run Code Online (Sandbox Code Playgroud)
这将导致错误:
错误:没有先前的提交就无法“压扁”您可以使用“ git rebase --edit-todo”修复此问题,然后运行“ git rebase --continue”。或者,您可以使用'git rebase --abort'中止重新设置。
解决方案:
压缩提交时,您应该将最近的提交压缩到旧提交中,反之亦然,因此在示例中将如下所示:
1 s 01mn9h78 The lastest commit
2 s a2b6pcfr A commit before the latest
3 pick 093479uf An old commit i made a while back
Run Code Online (Sandbox Code Playgroud)
如果您想要所有提交消息,这将很好用,我建议使用fixup而不是squash。
用相反的逻辑挤压。您将能够在后面的步骤中选择所需的提交消息。
pick您不想要提交消息的第一个提交。squash或fixup您想要合并的提交,直到具有您真正想要的提交消息的提交。pick 56bcce7 Closes #2774
squash e43ceba Lint.py: Replace deprecated link
Run Code Online (Sandbox Code Playgroud)
:x)Lint.py: Replace deprecated link。:x)希望对某人更清楚?
| 归档时间: |
|
| 查看次数: |
57822 次 |
| 最近记录: |