2017-08-08 58 views
0

有一個遠程分支my-issue-branch和一個同名的本地分支。我們進行git checkout HEAD〜2 go 10提交回來

git pull --rebase

以獲得最新的本地提交,但最後兩個提交被破壞構建。我們想要去2提交回建項目,並做

git checkout HEAD~2

這需要我們對10款,而不是僅僅兩回。

只有

git checkout <commit-hash>

幫助情況。

記住,四個人在這個分支上工作,有什麼可能是錯的?

+3

'git log --graph --oneline --decorate --all'告訴你什麼?由於之前的分支被合併,它可能會提交很多提交。 – Makoto

+0

我認爲是這樣,明天我會回到工作站並看看git log --graph – Asalle

回答

2

這裏有一個簡單的示意圖:

...--o--*-----o------o--o <-- you are here 
     \  /
      o--o--o--o 

您是在標記提交,向右。您需要走到左邊的*提交,跟隨其中一條或其他線路,或者甚至可以同時跟隨兩條線路。你會穿越多少個o?在「提交*」與「右邊緣」之間有多少個「o」?

現在考慮一下當有合併提交時(你必須在你當前分支的尖端附近有一些東西看到這個)會發生什麼。 ~2計數在某些特定行後退兩次提交。那麼其他行的所有提交呢?他們會怎麼樣?

+0

這可以通過使用rebase來代替合併?另外我該如何明確告訴git要遵循什麼路線? – Asalle

+1

當您重新提交*您的*提交時,您將放棄重新合併的工作中的合併,但這不會影響您從其他人處合併。你可以重新分配他們的工作,但對他們來說這並不是很好:-)(嚴肅地說,如果每個人都事先同意它,可以這麼做,但是要知道它爲每個人都做了額外的工作 - 確保好處你買的東西值得你付出的代價)。要遵循不同的行,您可以指定一個明確的步驟,或者只是查看圖形('git log --graph')並[ – torek

+1

...],然後通過顯式提交哈希簽出。但是,通常情況下,爲了追蹤引入錯誤的位置,您應該看看是否可以使用'git bisect',這是一個更高級別的過程,無需在圖形中手動挖掘。 – torek