2011-07-18 46 views
11

可以加入各種提交嗎?在不合並的情況下加入各種提交

這是我的情況:

我在OSX 10.6應用runst和10.7如此 我有固定的一些東西爲10.6,然後提交, 再次變更爲10.7和固定的修復,使他們相互兼容,然後再次提交。 然後又回到10.6,並再次檢查,並做一個小再犯等 (三個或四個提交總數,所有這些提交針對相同的問題)

正如你看到的所有這些提交是密切相關的所以我想加入他們,這可能嗎?

我還有一個問題需要解決,所以我不打算合併當前分支。 理想情況下,我想每個問題只有一個提交/我解決的錯誤。

編輯:

我已經把我的提交,因爲我必須這樣做,在不同的電腦,但支沒有被其他人使用,目前還沒有。

+0

爲什麼我得到「-1」? – nacho4d

+0

同意。爲什麼是-1?這是一個合理的問題,尤其是來自新的git用戶。 –

+2

給予好評否定-1 – rasjani

回答

15

一個很好的互動方式是git rebase -i。查看一個分支,查看歷史記錄,然後在第一次提交之前選擇一個您想要「加入」的提交(稱爲壓縮)。然後

git rebase -i <the commit> 

在編輯器中,您將您選擇的最近的一個後立刻顯示從一個提交列表。它看起來像

pick 2f4b7fa Some commit message 
pick 19f58bd Some other commit message 

找到你想加入的第一個提交。讓那一套去「挑選」。然後,對於所有想要壓縮的那些,請將「pick」改爲「squash」或「s」。標記提交「壓扁」意味着它將立即與之前(之上)的提交相結合。然後保存並退出。系統會提示您爲將要創建的新提交提交新的提交消息。保存並退出,你就完成了。請注意,您也可以使用分層視圖來移動周圍的提交。所以,如果你有一些失敗的提交,或者你需要將提交移動到一起壓縮它們,你也可以這樣做。另外需要注意的是:如果您將提交內容推送到遠程,那麼這可能會讓事情發生變化,特別是如果您正在與從該遠程計算機上拔出的其他人一起工作。

編輯:既然你已經被推分支已經,你知道沒有其他人在使用它,只要按照上面的步驟,然後做一個git push origin master -f,假設遠程回購的「原產地」和你」在主分支上。這是一個正常的推動,但-f告訴它覆蓋遙控器上的任何內容,並強制應用您的更改。當你從其他人共享的回購工作時,這會變得危險和/或令人困惑。

+2

注:與較新版本的Git,你也有'F'('fixup')選項,這就好比是南瓜,但只是下降的關聯提交的提交信息。 – Benjol

+0

@ naocho4d:我的答案更新,以帳戶爲您編輯 –

+0

@Ryan,我要問如何把它做,因爲通常的方式在這種情況下,沒有預期的效果,但你已經編輯了!謝謝 :) – nacho4d

2

你推動了你的提交嗎?如果沒有,你可以嘗試git rebase -i。它提供了一個壓縮選項來組合提交。 Here's一個有用的鏈接。

0

如果您在窗口框中,更舒適的方式是使用TortoiseGIT功能。

  • 在彈出菜單中
  • 選擇承諾只要打開「顯示日誌」選項
  • 右擊
  • 「合併到一個犯」

會做所有的工作適合你,沒有可怕的VIM跳舞:)

相關問題