有一個遠程分支my-issue-branch
和一個同名的本地分支。我們進行git checkout HEAD〜2 go 10提交回來
git pull --rebase
以獲得最新的本地提交,但最後兩個提交被破壞構建。我們想要去2提交回建項目,並做
git checkout HEAD~2
這需要我們對10款,而不是僅僅兩回。
只有
git checkout <commit-hash>
幫助情況。
記住,四個人在這個分支上工作,有什麼可能是錯的?
有一個遠程分支my-issue-branch
和一個同名的本地分支。我們進行git checkout HEAD〜2 go 10提交回來
git pull --rebase
以獲得最新的本地提交,但最後兩個提交被破壞構建。我們想要去2提交回建項目,並做
git checkout HEAD~2
這需要我們對10款,而不是僅僅兩回。
只有
git checkout <commit-hash>
幫助情況。
記住,四個人在這個分支上工作,有什麼可能是錯的?
這裏有一個簡單的示意圖:
...--o--*-----o------o--o <-- you are here
\ /
o--o--o--o
您是在標記提交,向右。您需要走到左邊的*
提交,跟隨其中一條或其他線路,或者甚至可以同時跟隨兩條線路。你會穿越多少個o
?在「提交*
」與「右邊緣」之間有多少個「o
」?
現在考慮一下當有合併提交時(你必須在你當前分支的尖端附近有一些東西看到這個)會發生什麼。 ~2
計數在某些特定行後退兩次提交。那麼其他行的所有提交呢?他們會怎麼樣?
這可以通過使用rebase來代替合併?另外我該如何明確告訴git要遵循什麼路線? – Asalle
當您重新提交*您的*提交時,您將放棄重新合併的工作中的合併,但這不會影響您從其他人處合併。你可以重新分配他們的工作,但對他們來說這並不是很好:-)(嚴肅地說,如果每個人都事先同意它,可以這麼做,但是要知道它爲每個人都做了額外的工作 - 確保好處你買的東西值得你付出的代價)。要遵循不同的行,您可以指定一個明確的步驟,或者只是查看圖形('git log --graph')並[ – torek
...],然後通過顯式提交哈希簽出。但是,通常情況下,爲了追蹤引入錯誤的位置,您應該看看是否可以使用'git bisect',這是一個更高級別的過程,無需在圖形中手動挖掘。 – torek
'git log --graph --oneline --decorate --all'告訴你什麼?由於之前的分支被合併,它可能會提交很多提交。 – Makoto
我認爲是這樣,明天我會回到工作站並看看git log --graph – Asalle