2016-10-22 72 views
1

在我压制Git提交的次数很少的情况下,我花了一些手动工作来挑选我想压缩的先前提交。Git脚本重新绑定和压扁临时提交

是否有某种方式可以自动执行 - 我的目标是压缩所有先前未提交到特定远程分支的提交。

详细说一下,假设我有1个本地分公司称为“开发”和2个遥控器,公共和私人。我承诺并将所有我想要的私人遥控器推到一个名为“dev”的分支上,我们称之为private/dev。但在公共远程我想保持干净整洁,并保持一个称为“主”的标准分支,我们称之为public/master。所以就像我说的,对于所有尚未提交给公共远程主分支的提交,我想要将这些提交到一个大的提交中,并且推送给公众/主人

我该如何实现这一目标?看起来很复杂。

+0

结帐https://robots.thoughtbot.com/autosquashing-git-commits – Yawar

回答

3

您只需通过public/master创建一个临时党支部(含public是你的公开远程的名称,并master - 例如 - 作为目的地分支)

你使用merge --squash(见“In git, what is the difference between merge --squash and rebase?”)

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 

关于冒号语法,请参阅“git push branch to a new repo with a different name”和examples section of git push
它允许将本地分支推送到具有不同名称的远程分支。

+0

我希望这可以工作。你能否详细说明每个步骤/命令究竟发生了什么?不知道我实际上是否遵循 –

+0

例如,你可以给合并结果一个提交消息,当你看到最新版本的公共/主人时会用到吗? –

+0

什么是“git push public tmp:master” - 冒号语法是什么意思? –