2016-10-22 70 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」 - 冒號語法是什麼意思? –