2011-11-21 42 views

回答

43

開始之前,您應確保git status乾淨(即沒有來自該命令的輸出)以避免丟失工作。做你想做什麼,最簡單的方法可能是:

git reset --soft <LAST-COMMIT-THAT'S-OK> 
git commit -m 'Many squashed commits' 
git push --force origin master 

你應該記住,這是改寫歷史(這就是爲什麼你需要--force選項git push),所以你應該避免這種情況,如果其他人有可能克隆或從您的存儲庫中提取。對於一些更多的選擇,看到這個問題,它的答案:

+2

什麼是這樣做,如果其他部門定期從回購拉動的影響(僅快速轉發)? – Gabe

+1

@whoami:如果有人拉動那個分支,他們會看到'(強制更新)',git會拒絕更新他們的分支。然後,他們需要(a)確保他們所有的工作都是承諾的(b)通常要麼重新綁定(例如,使用'git rebase origin/master'),要麼將其分支重置爲剛更新過的遠程追蹤分支版本例如'git reset --hard origin/master')。除非你很樂意向人們解釋做什麼,否則最好不要強迫重寫歷史。 –

+0

他們都會看到他們的本地分支機構和遠程分支機構已經發生分歧,將不得不合並這些變化,而不僅僅是快速前進。 –