让我们假设我的分支机构是featured-branch
,我正在其中进行开发
我用master
对其进行了重新设置,这是来自分支机构的一些提交
如何仅压缩对单个提交的提交,因此,当我提出拉取请求时,只有我的更改应出现在该PR中
但是由于其他提交来自master,因此它们必须在我的分支中,但在PR中不可见
答案 0 :(得分:1)
使用git rebase -i master
,然后编辑器将使用以下命令打开每次提交的更改状态
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
例如
您重新设置了主机的基础,然后运行命令git rebase -i master
,之后您将看到一些类似的提交(假设)
pick cf2cf55 C-1: Added new commit
pick c7d2f77 C-3: Allow user
pick 7db9f8d C-5: added new commit
pick 2a2e8cf C-6: Removed quick edits
以上内容的格式为<command> <commit-id> <commit message>
。
现在,您需要将所有提交压缩为单个提交,然后使用所需的命令更改pick命令。
假设我们需要将所有提交合并为单个提交,然后像这样使用命令s
或squash
pick cf2cf55 C-1: Added new commit
s c7d2f77 C-3: Allow user
s 7db9f8d C-5: added new commit
s 2a2e8cf C-6: Removed quick edits
保存后。这将压缩C-1
旁边的所有其他提交。现在,如果您想更改commit messgae,请进行更改,然后保存。
仅此而已。
答案 1 :(得分:0)
我宁愿总是提交一次提交而不暴露内部开发流程:
git checkout -b delivery origin/master
git merge --squash featured-branch
git commit -m "delivery message"
git push origin master