gpt4 book ai didi

Git 在使用交互式 rebase 压缩时跳过 merge 提交

转载 作者:太空狗 更新时间:2023-10-29 14:12:51 25 4
gpt4 key购买 nike

我正在使用 git 开发一项功能,到目前为止我已经完成了以下步骤。

  • checkout 基于 master 的名为 feature1 的新功能分支
  • 添加几个提交。
  • 根据 feature1 检查新分支 test
  • 测试 中执行一些更改。
  • 返回( checkout )feature1 分支。
  • merge test 分支到 feature1
  • 删除test分支
  • 编辑文件,并修改最后一次提交以反射(reflect)更改

这是git log --oneline -n​​ 5输出

de5d701 Merge branch 'test' into 'feature1' (amended)
a668f93 'feature1' commit3
ded7c00 'feature1' commit2
8731807 Initial 'feature1' commit
ff2f539 latest 'master' commit

在 merge 到 master 之前,我想压缩 ff2f539 latest 'master' commit 之后的所有内容。我试着表演

git rebase --interactive  ff2f539

但是编辑器中没有列出最新的提交:

pick 8731807 Initial 'feature1' commit
pick ded7c00 'feature1' commit2
pick a668f93 'feature1' commit3

# Rebase ff2f539..de5d701 onto ff2f539
#
# Commands:
...
# Note that empty commits are commented out

我不明白为什么跳过 test 分支 merge 到 feature1 分支产生的最新提交。使用以下内容保存并退出编辑器:

pick 8731807 Initial 'feature1' commit
squash ded7c00 'feature1' commit2
squash a668f93 'feature1' commit3

# Rebase ff2f539..de5d701 onto ff2f539
#
# Commands:
...
# Note that empty commits are commented out

产生新的提交,它不提供上次提交的更改

de5d701 Merge branch 'test' into feature1(amended)

他们迷路了。在 merge 到 master 之前如何将所有这些提交压缩为一个提交有什么帮助吗?

最佳答案

Git 按照设计不会在“交互式”列表中显示 merge 提交。相反,它包括通过该 merge 带入分支的所有提交。您可以使用 -p (--preserve-merges) 选项来更改该行为,但不建议在交互模式下这样做,因为结果可能不是那么明显(参见 http://git-scm.com/docs/git-rebase#_bugs )。

但是有一个不用 rebase 的简单解决方案:

# make sure your working copy is clean, do git stash if needed
git checkout feature1
git reset --soft ff2f539
git commit -m "..."

这将产生一个提交,包括 ff2f539 之后的所有更改。

关于Git 在使用交互式 rebase 压缩时跳过 merge 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com