2011-08-28 93 views
0

我是新來的git,我犯了一些變化,git告訴我需要先拉,所以我拉了,但我的編輯沒有顯示修改後的版本,所以我再次提交衝突,我解決了衝突並提交再次。現在我有3個提交! (雖然我認爲第一個不應該在那裏)我已經推入Git後如何合併提交?

問題是我每次提交後都會推送。那麼是否有合併這些推送提交的方法?

您能否提供一步一步的解釋?我已經使用SVN和CVS之前,但我很新與git

+0

我很困惑。可以向我們展示你的提交圖的頂部是怎樣的? (也就是說,當你運行'gitk'時你看到了什麼?) – svick

+0

在你準備好分享你的東西之前,你不應該推動它。如果您仍然不確定回購中的內容是否正確(聽起來像是這種情況),您不應該推。 – Tekkub

回答

0

您所描述的情況似乎不太可能,因爲試圖去提交,而在下面的錯誤衝突的結果:

fatal: 'commit' is not possible because you have unmerged files. 
Please, fix them up in the work tree, and then use 'git add/rm <file>' as 
appropriate to mark resolution and make a commit, or use 'git commit -a'. 

如果你不能提交衝突然後運行git push不會實際推送更改。

您可以運行下面的命令來看看有什麼承諾實際發生

git log --patch --color 
0

如果我corrrectly理解你的問題,這應該做你想要

可以壁球所有這三個是什麼與git rebase -i HEAD~3一起承諾。這將基本上擺脫你的壞提交和你最後一個內容將是最終的內容。

當您運行該命令時,將會彈出一個編輯器。替換pick in the second and third line with壁球。您將需要再次推出-f標誌。

這將工作,如果他們是你的最後三個提交。如果它們遠遠落後於此。您將需要重新放回更遠的位置,並且只需要將squash放在您要壓扁的兩個提交中。

+0

當他已經推送時,像這樣重新激活可能不是一個好主意,如果其他人正在處理他推送到的存儲庫。 – Gerry

+0

@Gerry根據我的理解,op推送了他的提交,現在想編輯它們。他別無選擇,只能重寫歷史。 – Andy

+0

另一種選擇是在意識到由此導致的可能問題可能超過最初的問題之後選擇不這樣做。 – Gerry