Git脚本,用于重新设置基础并挤压临时提交

Git脚本,用于重新设置基础并挤压临时提交,git,github,git-rebase,git-squash,Git,Github,Git Rebase,Git Squash,在我挤压Git提交的几次操作中,我需要一些手工工作来挑选我想要挤压的前几次提交 是否有某种方法可以自动实现这一点?我的目标是压缩之前所有尚未推送到特定远程分支的提交 更详细地说,假设我有一个名为“dev”的本地分支和两个公共和私人远程分支。我提交并将所有我想要的东西推送到私有远程,推送到一个名为“dev”的分支,让我们称之为private/dev。但在公共遥控器上,我想保持东西干净整洁,并保留一个名为“master”的标准分支,我们称之为public/master。正如我所说,对于所有尚未提交到

在我挤压Git提交的几次操作中,我需要一些手工工作来挑选我想要挤压的前几次提交

是否有某种方法可以自动实现这一点?我的目标是压缩之前所有尚未推送到特定远程分支的提交

更详细地说,假设我有一个名为“dev”的本地分支和两个公共和私人远程分支。我提交并将所有我想要的东西推送到私有远程,推送到一个名为“dev”的分支,让我们称之为
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