我有一个远程 Git 服务器,这是我要执行的方案:
对于每个错误 / 功能,我创建一个不同的 Git 分支
我继续在 Git 分支中使用非官方的 Git 消息提交代码
在顶级存储库中,我们必须使用官方 Git 消息对一个错误进行一次提交
那么,如何将我的分支合并到远程分支,以便他们对所有签入仅获得一次提交(我什至想为此提供提交消息)?
假设您的错误修复分支称为bugfix
并且您希望将其合并到master
:
git checkout master
git merge --squash bugfix
git commit
这将从bugfix
分支中获取所有提交,将它们bugfix
为 1 个提交,并将其与您的master
分支合并。
说明 :
git checkout master
切换到您的master
分支。
git merge --squash bugfix
从bugfix
分支中获取所有提交,并将其与当前分支合并。
git commit
根据合并的更改创建一个提交。
省略-m
参数,可以在最终提交之前修改包含已压缩提交中的每个消息的提交消息草稿。
最终为我解决的是一条评论,显示:
git checkout main
git merge --squash feature
等价于:
git checkout feature
git diff main > feature.patch
git checkout main
patch -p1 < feature.patch
git add .
当我想合并具有 105(!!)个提交的功能分支并将它们全部压缩为一个时,我不想git rebase -i origin/master
因为我需要分别解决每个中间提交的合并冲突(或者至少是 git 无法弄清楚的那些)。使用git merge --squash
可以得到我想要的结果,只需一次提交即可合并整个功能分支。而且,我最多只需要执行一次手动冲突解决。
您要与壁球选项合并。那就是如果您想一次做一个分支。
git merge --squash feature1
如果要在一次提交的同时合并所有分支,请首先以交互方式进行变基并压缩每个功能,然后再使用章鱼合并:
git checkout feature1
git rebase -i master
压入一个提交,然后重复其他功能。
git checkout master
git merge feature1 feature2 feature3 ...
最后的合并是 “章鱼合并”,因为它一次合并了许多分支。
希望这可以帮助
如果您已经在main
上进行了git merge bugfix
,则可以使用以下方法将合并提交压缩为一个:
git reset --soft HEAD^1
git commit
通过自定义提交将newFeature
分支合并到master
:
git merge --squash newFeature && git commit -m 'Your custom commit message';
如果相反,您会
git merge --squash newFeature && git commit
您将收到一条提交消息,其中将包含您可以自定义的所有newFeature
分支提交。
我在这里详细解释: https : //youtu.be/FQNAIacelT4
假设您在功能 / 任务 1 中进行了多次提交。
转到您的项目分支(project / my_project)
git checkout project/my_project
创建一个新分支(功能 / task1_bugfix)
git checkout -b feature/task1_bugfix
使用--squash
选项进行设置
git merge --squash feature/task1
创建一个提交
git commit -am "add single comments"
推你的分支
git push --set-upstream origin feature/task1_bugfix
对于 Git
创建一个新功能
通过终端 / 外壳:
git checkout origin/feature/<featurename>
git merge --squash origin/feature/<featurename>
这不会提交,允许您首先对其进行检查。
然后提交并完成此新分支的功能,并删除 / 忽略旧分支(您进行开发的分支)。
如果出现错误:由于未合并文件,因此无法提交。
git checkout master
git merge --squash bugfix
git add .
git commit -m "Message"
修复了所有冲突文件
git add .
您也可以使用
git add [filename]