git南瓜提交与主分支的基础后提交?

时间:2018-07-20 06:39:27

标签: git github

让我们假设我的分支机构是featured-branch,我正在其中进行开发

我用master对其进行了重新设置,这是来自分支机构的一些提交

如何仅压缩对单个提交的提交,因此,当我提出拉取请求时,只有我的更改应出现在该PR中

但是由于其他提交来自master,因此它们必须在我的分支中,但在PR中不可见

2 个答案:

答案 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命令。

假设我们需要将所有提交合并为单个提交,然后像这样使用命令ssquash

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