2009-09-15 107 views
10

我有一個純粹的git-svn倉庫,並對它做了'git svn fetch'。如何更新'git svn fetch'後裸露的回購'git log'?

正在運行'git log'不顯示更新。我確定有更新,因爲它顯示在'git svn fetch'和'git svn log'顯示它們之後文件已更改。

請注意,我故意把這個裸回購所以「git的重訂」將無法正常工作。 獲取提取的更改的適當命令是什麼?

回答

8

嘗試git log git-svn - 這不是我「T有一個裸露的回購協議,但我只是運行git svn fetch和標準git log給我的電流(衍合)記錄,但與混帳svn的ARG(這是除了主另一個分支是由git branch -a在我的情況確定)我得到了日誌到th e fetched修訂版本

+0

是的,你說得對。 'git log'尋找master ref,這就是爲什麼它在'git symbolic-ref refs/heads/master refs/remotes/git-svn'上工作的原因。謝謝。 – vjangus 2009-09-15 05:20:39

+0

這在git中也不起作用1.7.5.4 – MDCore 2011-11-24 13:53:34

6

我找到了答案,

git的象徵,裁判裁判/頭/主裁判/遙控器/混帳svn的

感謝史蒂芬沃爾特的評論中 http://gsocblog.jsharpe.net/archives/12

+0

這不是在git的工作了1.7.5.4 – MDCore 2011-11-24 13:53:16

+0

它爲我的作品! – 2014-07-09 09:49:40

17

A git svn fetch增加了一個名爲remotes/git-svn的新遠程分支(可與git branch -a一起看到)。

如果您對上游svn進行了更改,然後再次運行git fetch,則更改將在此分支上而不是在主控上被拉(實際上取回)。

因此,爲了讓主分支上的git日誌(以及其他所有東西)正常工作,您只需要合併,就像通常在獲取後必須執行的操作一樣(這是git pull執行的操作,提取然後是合併)。

由於混帳SVN拉不工作,你必須手動合併。而在主分支,運行:

git merge remotes/git-svn

這將合併master分支與混帳svn的分支,使得一切都ok了一次。

因此,在未來,運行

git svn fetch 
git merge remotes/git-svn 

,你會是最新與上游資源庫一次。

設置主控的頭部與git - svn的頭裁判通過vjangus的建議也將完成這項工作,但你不應該永遠被製作在遠程分支的變化。

+1

這是正確處理我遇到的情況的答案。 – Ian 2012-02-26 21:41:33

+0

我最初拉着svn的用'混帳SVN取 -s前綴=產地/',所以在我的情況有一個'遙控器/產地/ trunk'分支,而不是一個'混帳svn'之一。儘管如此,解決方 – mcmlxxxvi 2014-07-01 15:25:02