git 我怎样才能在从main分支中变基我的本地分支之前合并所有的本地提交?

rekjcdws  于 2023-05-05  发布在  Git
关注(0)|答案(2)|浏览(196)

当我在一个团队中工作并且必须将我的本地分支推到远程主分支时,我首先用这个简单的命令将我的本地分支重基到master:

git fetch && git rebase origin/main

但是当我这样做时,所有的本地提交都被应用,并且发生冲突,因为这些以前提交的代码与我的最后一个本地状态不同(保存在我的最后一个提交中)。而解决我自己提交的冲突需要很多(无用的)时间...
我害怕做一个错误的处理,所以我在这里寻找一些帮助。我的问题是:
在变基之前,我如何将所有的本地提交合并为一个?谢谢,当我变基时,只有一个提交要应用
我不知道这是否是更好的方法,请随时给予我的建议。:)谢谢!

vaj7vani

vaj7vani1#

#!/bin/sh
## Usage: ./script <branch>
git fetch origin main
git checkout origin/main
git merge --squash $1
# You’ll want to modify the commit message here
git commit
git branch --force $1 HEAD
# Return
git checkout -

测试

我将此方法与在特性分支上运行git rebase <upstream>进行了比较,从这两种方法中获得了相同的树ID。
根据默认的提交消息,squash也压缩了我期望的范围(它相当冗长)。

提交消息注意事项

git merge --squash的默认提交消息远不如您通过squashgit rebase --interactive获得的提交消息好。

其他:重新应用冲突

如果你只是厌倦了在使用git-rebase(1)时一遍又一遍地修复相同的合并冲突,那么你可能想看看git-rerere(1)。

5lwkijsr

5lwkijsr2#

您可以通过以下方式轻松做到这一点:

  1. git rebase -i HEAD~n(其中n是在main之上的提交数)
    1.编辑器将打开,您必须将pick保留在顶部提交中,然后将以下行中的pick替换为s,这代表squash。
    1.在下一个编辑器中,按您的意愿编辑提交消息
    1.您将看到一条消息,表示“成功重新定基...”
    1.然后运行git pull --rebase origin main将该提交放在远程分支上的提交之上

相关问题