2011-01-10 51 views
48

我使用git作爲Subversion的前端(通過git svn)。Git:警告:當使用git-svn時,refname'xxx'是不明確的

因此,對於每個svn trunk /分支,我都有一個名爲「remotes/xxx」的遠程分支。例如「遙控器/後備箱」,「遙控器/ coolfeature」。

現在我想要爲每個遠程分支都有一個「默認」本地分支,以將其用於dcommit。問題是,我想這樣的分支Subversion的分支的名字命名,如「樹幹」,「coolfeature」,所以我有以下分支機構的git:

trunk 
coolfeature 
remotes/trunk 
remotes/coolfeature 

的問題是,每次我引用「樹幹「或」coolfeature「git抱怨分支名稱不明確。沒什麼大不了的,但我感到不舒服。

問題是,我該如何處理該警告,假設只是更名分支不是我想要做的。這種情況的最佳做法是什麼?

+3

我不知道。我通過選擇不同但相似的名字來避免這種情況。但是,您可以嘗試使用`refs/heads/trunk`或者甚至只是`heads/trunk`。我認爲這應該工作。 – MatrixFrog 2011-01-10 07:00:36

回答

40

如果您將--prefix=svn/標誌傳遞給git svn clone命令,則所有Subversion分支將被命名爲remotes/svn/branchname。如果這是你可以接受的,它修復了「refname不明確」的警告。它也給你指的是遠程使用svn分支的一個很好的方式,如例如,如果你想創建一個本地跟蹤分支,將是這樣的:

$ git checkout -b branchname svn/branchname

在當地的分行則具有相同名稱作爲遠程svn分支,並且沒有模棱兩可的refname問題。

+19

如何修復已經克隆了`--prefix = svn /`的版本庫? – 2011-03-29 11:54:08

+0

我剛剛克隆到一個新的目錄,然後從另一個目錄中獲取本地分支:git fetch ../other_dir branch_name:branch_name ---分支完成對於分支名稱也很有用。 – EnigmaCurry 2011-09-21 19:07:32

13

如果你只是想擺脫警告,設置core.warnAmbiguousRefsfalse

git config --global core.warnambiguousrefs false 

如果你想這種行爲只針對單一的倉庫中,省略--global標誌。

+0

我可能在這裏違反了所有已知/未知的規則,但是我在一個新的repo上嘗試了「git tag -a HEAD -m'開始回購'」,之後我收到了OPs錯誤消息。在這篇文章中描述的修復允許我繼續工作。 – bakoyaro 2013-03-25 12:16:31

1

可能有另一個'trunk'和'coolfeature'作爲標籤。在這種情況下,git不知道是否引用分支或標記。重命名標籤,並檢查是否混帳不報告「曖昧」的名字

0

以避免衝突的消息,指當地的分支機構的時候,用head/

例如,衝突的分支點前綴他們topic

$ git diff topic remotes/topic 
warning: reframe 'topic' is ambiguous. 
... 

成爲

$ git diff heads/topic remotes/topic 
... 
相關問題