'git squash'(推后)是否重写历史?
Does 'git squash' (after pushing) rewrite the history?
我正在为 功能 开发一个单独的分支。
现在我想在我的 main 分支中使用此功能,但只是将所有提交压缩为一个提交(在提交消息中重述)。
问题是 我已经 push
将分支 remote
。
所以我不确定我是否可以执行 git merge --squash feature
(来自 main 分支)或 是否可以重写我的 git 历史记录.
我不知道 git merge --squash
是否会创建一个新的提交(作为补丁,包含我合并分支的所有更改。所以在安全方式),或者如果它将从我的分支中删除旧提交,或者只是对git历史。 (我想避免这种情况,因为我在团队中工作)。
我是否应该选择 commit-range cherry-pick
而不是 git squash
? (但是 cherry-pick 只会复制所有提交而不压缩它们)
或者与 squash 合并可以吗? (即使在推送到远程功能分支之后)
我想将我的 feature 分支集成为一个提交(可能包含我通过 --squash
获得的所有提交消息)到我的 main 分支,但不重写历史。
没有历史被改写。在高级命令中,只有 git rebase
和 git commit --amend
执行历史重写。
git merge --squash
只需准备一个工作树,其中包含您要合并的分支的所有信息,正如文档所述:
Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit command to create a merge commit. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus).
我正在为 功能 开发一个单独的分支。
现在我想在我的 main 分支中使用此功能,但只是将所有提交压缩为一个提交(在提交消息中重述)。
问题是 我已经 push
将分支 remote
。
所以我不确定我是否可以执行 git merge --squash feature
(来自 main 分支)或 是否可以重写我的 git 历史记录.
我不知道 git merge --squash
是否会创建一个新的提交(作为补丁,包含我合并分支的所有更改。所以在安全方式),或者如果它将从我的分支中删除旧提交,或者只是对git历史。 (我想避免这种情况,因为我在团队中工作)。
我是否应该选择 commit-range cherry-pick
而不是 git squash
? (但是 cherry-pick 只会复制所有提交而不压缩它们)
或者与 squash 合并可以吗? (即使在推送到远程功能分支之后)
我想将我的 feature 分支集成为一个提交(可能包含我通过 --squash
获得的所有提交消息)到我的 main 分支,但不重写历史。
没有历史被改写。在高级命令中,只有 git rebase
和 git commit --amend
执行历史重写。
git merge --squash
只需准备一个工作树,其中包含您要合并的分支的所有信息,正如文档所述:
Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit or move the HEAD, nor record $GIT_DIR/MERGE_HEAD to cause the next git commit command to create a merge commit. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus).