[英]GIT: how to squash several commits that have been pushed to a remote repo?
我和Git有一個奇怪的設置。 基本上我有:
[client 1] <---> [remote repo] ----> [client 2]
[客戶端1]本質上是我正在使用的本地倉庫,因為我無法在本地機器上編譯/構建項目。
[客戶端2]是用於構建的遠程服務器。
在中間,我有另一個回購,[遠程回購],基本上用於與我公司的cvs中央回購同步,並且還在我的[客戶端1]和[客戶端2]之間進行同步。
由於所有編譯/構建都在[客戶端2]上完成,因此我在[客戶端1]上進行了許多簡單的提交,只是為了修復編譯或構建錯誤。
所以當我發現最后一次提交時出現錯誤時,已經太晚了,因為提交已經被推送到遠程倉庫並從中撤出。
我怎樣才能將這些(很多)瑣碎的提交壓縮成一個? 謝謝。
首先,避免擠壓和一般重寫歷史,除非你絕對必須。 進行“微不足道的”提交並不是壓制推送提交的理由。 如果他們能留下來,就讓他們留下來。 並且在cvs中重寫歷史並不簡單,所以既然這些提交已經進入了cvs repo,你應該忍受它。
對於git遠程倉庫,如果你想繼續 - 我假設你知道要壓縮你當地倉庫的提交( git rebase -i
很簡單)。 壁球后,用-f
推動 - 推力。
你可以使用git rebase -i
或git merge --squash
,請參閱使用Git將我的最后一次X提交 git merge --squash
在一起
但是,由於您已將它們發布到另一個存儲庫,因此您必須將其修復到其他存儲庫。 相當麻煩,但git push --force
是你需要的命令。
但是不建議:如果遠程倉庫已經與CVS同步,你也必須修復它......如果其他開發人員已經從它中撤出了同樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.