簡體   English   中英

GIT:如何壓縮已被推送到遠程倉庫的幾個提交?

[英]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 -igit merge --squash ,請參閱使用Git將我的最后一次X提交 git merge --squash 在一起

但是,由於您已將它們發布到另一個存儲庫,因此您必須將其修復到其他存儲庫。 相當麻煩,但git push --force是你需要的命令。

但是不建議:如果遠程倉庫已經與CVS同步,你也必須修復它......如果其他開發人員已經從它中撤出了同樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM