我正在使用git-svn來處理代碼庫,我需要將trunk中的更改合併到我的科。在git中合併:通過git-svn,說已經是最新的,但git-diff說有差異
我有兩個分支在git中抓取,當我在分支中運行git diff trunk時,我可以看到所有更改。
但是,當我運行git merge heads/trunk時,我收到一條消息「已經是最新的」。
這顯然不是最新的。我究竟做錯了什麼?
我正在使用git-svn來處理代碼庫,我需要將trunk中的更改合併到我的科。在git中合併:通過git-svn,說已經是最新的,但git-diff說有差異
我有兩個分支在git中抓取,當我在分支中運行git diff trunk時,我可以看到所有更改。
但是,當我運行git merge heads/trunk時,我收到一條消息「已經是最新的」。
這顯然不是最新的。我究竟做錯了什麼?
「已經起牀了最新的」可能意味着:
注意:注意git svn caveats
合併在Subversion的跟蹤缺乏,做與Subversion分支的發展是很麻煩的結果。
儘管git svn
可以追蹤採用標準佈局的存儲庫的複製歷史記錄(包括分支和標籤),但它還不能代表SVT用戶在git上游發生的合併歷史記錄。
因此,建議用戶保持歷史儘可能線性內git的緩和與SVN爲了簡單起見,用一個能力較少的系統(SVN)互操作的緣故相容性,則建議所有
git svn
用戶clone
,fetch
和dcommit
直接從SVN服務器,並避免所有git clone/pull/merge/push
操作之間的git存儲庫和分支機構。
在git分支和用戶之間交換代碼的推薦方法是git format-patch
和git am
,或者只是'dcommit'到SVN存儲庫。
啊哈...所以我使用了太多的git功能,而不是從svn中拉出來真的讓我能夠。很高興知道,謝謝! – 2010-05-11 13:15:55
沒有一個例子。以下是如何陷入這種局面:
(在一個空的目錄開始):
> git init > echo "hello" > a.txt > git add -A > git commit -m "Created a on master" > git branch test > git checkout test
此時A.TXT是在主機和測試分支相同現在
> echo "goodbye" > a.txt > git add -u > git commit -m "Changed a on test"
(明顯)會有區別:
> git diff --name-status master M a.txt
還沒有git沒有合併:
> git merge master Already up-to-date.
這是因爲更改是在測試而不是主控上進行的。如果切換到測試,差異同樣會報,但合併現在的變化,從測試到主合併:
> git checkout master > git diff --name-status test M a.txt > git merge test Updating 088cd9d..3d8c8e2 Fast-forward a.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Git的合併是有方向性的,從分支合併到B是不一樣的B合併到A.
你有沒有檢查它的樣子在eg gitk? – Makis 2010-05-11 05:25:09