我有一個本地git倉庫,一個遠程倉庫。 自從上次從遠程獲取數據後,我對本地回購做了5次提交。混帳,壓扁提交
現在我需要推送到遠程。我需要壓縮最後5次提交。
我可以git rebase -i HEAD~5
做,但它不是很好。我不想在本地回購中更改任何內容。我想推一個壓扁的提交到遠程,並在我的本地回購中留下5個不變的提交。
任何想法?
UPD: 如果我有5次提交的本地回購,那麼該怎麼辦?我需要創建新的遠程回購以與其他人分享我的代碼。如何壓扁承諾這個新的回購?
我有一個本地git倉庫,一個遠程倉庫。 自從上次從遠程獲取數據後,我對本地回購做了5次提交。混帳,壓扁提交
現在我需要推送到遠程。我需要壓縮最後5次提交。
我可以git rebase -i HEAD~5
做,但它不是很好。我不想在本地回購中更改任何內容。我想推一個壓扁的提交到遠程,並在我的本地回購中留下5個不變的提交。
任何想法?
UPD: 如果我有5次提交的本地回購,那麼該怎麼辦?我需要創建新的遠程回購以與其他人分享我的代碼。如何壓扁承諾這個新的回購?
從Titas的answer輕微的變化,而不必使用master
分支,並在一個新的分支擠壓(你會推到新的回購)
git remote add newrepo url://of/your/new/repo
git checkout -b newbranch master
git merge --squash master
git push -u newrepo newbranch:master
但是,這將推動主的完整歷史記錄,+1(壓扁)提交,在你的新回購。
如果你想要一個分支新的歷史記錄,您的回購爲5個新提交後,更容易:
.git
在本地克隆,git init.
(即重新創建所有現有文件的新本地git倉庫),如果你只是想保留你的五個提交參考,也許你應該在他們的分支工作。
git branch new-branch master
做你的提交。既然你已經這樣做了,只是重置主的頭:
git reset --hard HEAD~5
git merge --squash master new-branch
git push
你將最終被壓扁提交關於master
和origin/master
和5次提交的new-branch
。
+1。另見http://stackoverflow.com/questions/2427238/in-git-what-is-the-difference-between-merge-squash-and-rebase/2427520#2427520 – VonC
是的。這是一個很好的選擇。但我發佈的問題描述了我的情況並不完全:)。我有5個提交,需要推送他們到新(空)遠程回購/所以我沒有標籤,存在於我的本地和我的遠程回購...因此,我問到「在飛行中」擠壓。 .. –