2016-11-07 21 views
2

我正在使用git開發一個項目(沒有隊友,只有我)。 我一直在做提交,合併和推動他們到遠程(所有無序的希望,我學會如何重新組裝和修復歷史)現在我想重新設置已經在遠程的所有更改(只有1主分支1用戶),通過rebase我的意思是我想壓扁並重命名一些提交。在git推出後不能擠壓提交 - Visual studio

我用的是他們在這個鏈接... How to squash commits in git after they have been pushed?建議的命令,但問題是,我得到了一些錯誤,我不明白他們,這裏是顯示問題的截圖:

image - git cmd rebasing error

image - part of visual history tree

===========================錯誤作爲文本============== ==================

使用的命令:

git rebase -i origin/master~2 master 

(它應該只顯示2提交,但由於某種原因,它顯示了2個以上,像40+)

錯誤消息:

interactive rebase in progress; onto 9bdd944 
Last commands done (15 commands done): 
    pick 7af3656 "commit message" 
    pick 7355eff "another commit message" 
Next commands to do (110 remaining commands): 
    pick fc10330 "another commit message" 
    pick f22d8c0 "another commit message" 
You are currently rebasing branch 'master' on '9bdd944'. 

nothing to commit, working tree clean 
The previous cherry-pick is now empty, possibly due to conflict resolution. 
If you wish to commit it anyways, use: 

    git commit --allow-empty 

Otherwise, please use 'git reset' 
Could not apply 7355eff... "another commit message" 

========= ==================錯誤作爲文本============================= ===

它看起來像一團糟,任何幫助我解決這個問題的提示將不勝感激,我是新的使用Git,我敢打賭,這將是一些高級用戶容易。

+0

請將錯誤作爲文本發佈。不是每個人都可以讀取你的圖像... –

+0

它看起來像你選擇「選擇」,而不是從你張貼的圖像「壁球」...如果你只是使用「Pick」的一切,它只是重新應用當前提交...相反,編輯每一行並將動作設置爲「s」或「squash」。 – jessehouwing

+0

@umläute對不起,我不知道,我將作爲文本張貼..... – lbtg

回答

1

的另一種方式,你可以很容易地做到這一點是發出:

git reset -soft d0b8a84d 
git commit -m "squashed everything after d0b8a84d" 
git push -f 

這將首先復位歷史回提到的承諾,並且基本上是「未完成」的所有變化,但他們仍然存儲在暫存區。

然後您立即用新提交提交所有這些更改。

然後你把它們推回你的遙控器。由於您正在重寫已發佈的歷史記錄,因此需要一支部隊。


Git的底墊也可以做,但上面是容易得多,如果你想要做的是某一點後,您提交的所有壓縮成一個單一提交。在合併的情況下,rebase會提取所有提交,這可能會讓事情變得困難。

如果您想結合特定提交或更改舊提交等的提交消息,交互式底圖更強大。但在您的情況下,上述方法非常容易。

+0

是的,我想要做的就是壓扁並重命名提交,我的歷史有200次提交,最多3次合併,我認爲.....我會嘗試你的建議,希望它的作品,或者我將不得不重新包裝一切作爲一個單獨的提交,謝謝你,後來發佈結果 – lbtg

+0

我已經嘗試過了,對於第一組提交很有效,但是如果我想爲第二組再執行一次,那麼我將失去第一組的提交信息。 – lbtg

+0

是的,在這種情況下,你需要使用rebase。在重新合併合併時,您需要在重新合併時重新進行實際合併。當需要清理大量數據時,這可能非常令人沮喪。 – jessehouwing