2014-02-26 52 views
1

當基礎重建my_branchother_branch,即:混帳底墊失敗:瞭解我的倉庫的狀態

git rebase other_branch 

如果有衝突,我得到的標記

<<<<<<< HEAD 
stuff_1 
===== 
stuff_2 
>>>>>>> Some commit message 

Q1第一個問題:stuff_1 from my_branchother_branch

我也注意到,當這種情況發生時,我HEAD現在指向一些不願透露姓名的承諾,在我的情況65c47727a2500691233cfed2a2cfe7686b7fb92d(這是cat .git/HEAD輸出)

我也得到:

> git status 
rebase in progress; onto e41e19d 
You are currently rebasing branch 'my_branch" on 'e41e19d' 
... 
Unmerged paths: 
both added: some_file.sh 

Q2當我修復rebase時,爲什麼我的HEAD指向一些隨機提交?

Q3Unmerged pathsboth added在這方面是什麼意思?

回答

4

在重新組裝的開始階段,HEAD設置爲other_branchThat is documented。然後,所有提交的other_branch..my_branch都被重新應用。該迭代過程可能會在某些時候失敗,然後您必須解決合併衝突,並在解決衝突後執行git rebase --continue

答到Q2:當你解決衝突,你HEAD點提交對應於最後一次提交的other_branch..my_branch已成功應用。你可以使用git show來識別,但它的散列當然不同,因爲它的父母是不同的。

對Q1的回答:stuff_1來自HEAD。爲什麼我在Q2的答案中說過,這意味着它來自other_branch的修改版本,其中my_branch的提交可能已經應用。

答到Q3:取消合併路徑意味着仍有未解決的衝突。看起來my_branchother_branch都添加了一個新文件some_file.sh。有關解決衝突的方法,請參閱「Resolving a 'both added' merge conflict in git?」問題。一旦你解決了衝突(修正some_file.sh在這裏),你做了git add some_file.shgit rebase --continue一旦你已經修復它們。 git-rebase將提交當前更改,並繼續進行重新標記過程。

+2

「未合併路徑」表示仍存在未解決的衝突。一旦你解決了衝突(在這裏修復'some_file.sh'),你一旦把它們全部修好了,你就要'git add some_file.sh'和'git rebase --continue'。 – vonbrand

+0

@vonbrand如果你編輯和改進我的答案,我會很高興。 – lrineau

+0

謝謝@lrineau。從概念上講,爲什麼在解決足夠的衝突後添加(分期)文件?爲什麼我不需要提交該文件? –