在Git中重新建立基础后,COMMIT将失去什么?

时间:2019-11-27 03:09:06

标签: git github rebase git-commit git-interactive-rebase

#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.

使用提交哈希注释掉行是否与使用DROP关键字相同?
我想重新设置我的Pull Request的基础,因此它仅提交了一份提交。

3 个答案:

答案 0 :(得分:3)

是的,drop和删除的行都将导致删除提交。来自the docs

  

要删除提交,请将命令“ pick”替换为“ drop”,或删除匹配的行

但是有很小的差异。例如:

  1. 删除所有行将中止重新设置,因此与全部删除
  2. 如果缺少行,可以启用一项警告/错误检查功能:
      

    rebase.missingCommitsCheck:   如果设置为“ warn”,则git rebase -i将在删除某些提交(例如删除一行)时显示警告,但是重新设置仍将继续。如果设置为“错误”,它将打印先前的警告并停止变基,然后可以使用git rebase --edit-todo来更正该错误。如果设置为“忽略”,则不进行检查。要在没有警告或错误的情况下删除提交,请使用待办事项列表中的drop命令。默认为“忽略”。

答案 1 :(得分:2)

  

注释掉带有提交哈希的行是否与使用DROP关键字相同?

  

我想重新设置我的Pull Request的基础,因此它只提交了一份提交。

我假设您仍然希望保留所有更改,但是将所有更改组合为一个大提交。在这种情况下,您应该做的是将每个提交行(第一个提交行除外)开头的pick更改为fixup

例如,假设您的变基提示如下:

pick b761975 Start a big project
pick 5239708 Oops fix a bug in the project
pick a85ecbe Oops fix another bug
pick 17a2131 Finally the big project is done

如果您希望将所有内容合并到一个名为“启动大项目”的大型提交中,请按如下所示进行编辑:

pick b761975 Start a big project
fixup 5239708 Oops fix a bug in the project
fixup a85ecbe Oops fix another bug
fixup 17a2131 Finally the big project is done

如果您还想在大型提交中更改提交消息,则可以将第一个pick更改为reword

答案 2 :(得分:0)

是的。两者都相同(注释line或drop关键字)。 git文档讲述了同样的事情。

有关更多信息,请参阅git rebase documentation

  

要删除提交,请将命令“ pick”替换为“ drop”,或者仅   删除匹配的行。