Git脚本,用于重新设置基础并挤压临时提交
在我挤压Git提交的几次操作中,我需要一些手工工作来挑选我想要挤压的前几次提交 是否有某种方法可以自动实现这一点?我的目标是压缩之前所有尚未推送到特定远程分支的提交 更详细地说,假设我有一个名为“dev”的本地分支和两个公共和私人远程分支。我提交并将所有我想要的东西推送到私有远程,推送到一个名为“dev”的分支,让我们称之为Git脚本,用于重新设置基础并挤压临时提交,git,github,git-rebase,git-squash,Git,Github,Git Rebase,Git Squash,在我挤压Git提交的几次操作中,我需要一些手工工作来挑选我想要挤压的前几次提交 是否有某种方法可以自动实现这一点?我的目标是压缩之前所有尚未推送到特定远程分支的提交 更详细地说,假设我有一个名为“dev”的本地分支和两个公共和私人远程分支。我提交并将所有我想要的东西推送到私有远程,推送到一个名为“dev”的分支,让我们称之为private/dev。但在公共遥控器上,我想保持东西干净整洁,并保留一个名为“master”的标准分支,我们称之为public/master。正如我所说,对于所有尚未提交到
private/dev
。但在公共遥控器上,我想保持东西干净整洁,并保留一个名为“master”的标准分支,我们称之为public/master
。正如我所说,对于所有尚未提交到公共远程主机分支的提交,我想将它们压缩成一个大提交,并推送到public/master
我怎样才能做到这一点?看起来很复杂。您只需通过
public/master
创建一个临时分支(其中public
是您的公共遥控器的名称,而master
是目标分支)
并且您使用(请参见“”)
关于冒号语法,请参阅“”和。它允许将本地分支推送到具有不同名称的远程分支。请查看我希望这能奏效。请详细说明每个步骤/命令中具体发生了什么?不确定我是否真的遵循了例如,你能给合并结果一条提交消息,当你查看最新版本的public/master时会用到它吗?还有什么是“git push public tmp:master”-冒号语法是什么意思?我用有用的细节更新了我的问题,我会编辑你的答案以反映细节,如果我弄错了,请纠正我,谢谢。@AlexanderMills是的
git merge--squash
不会生成提交。您需要一个额外的git commit-m
。编辑。
git checkout -b temp public/master
git merge --squash dev
# since merge --squash does not produce a commit:
git commit -m "squash dev"
git push public temp:master
git checkout dev
git branch -d temp