2011-03-11 40 views
11

請原諒我的無知;我是Git的新手,不確定哪裏可以找到更好的答案,但是下面的url(它指向我的中介服務器上的git存儲庫)中的'example.com'之後冒號的目的是什麼?這個git倉庫url中冒號的目的是什麼?

git remote add repo_name ssh://serveradmin%[email protected]:/home/45678/domains/git.example.com/html/example.git

+2

看起來像一個沒有意義的冒號。通常情況下,端口號會跟隨,但沒有數字時,應使用** ssh **(22)的默認端口號。 – harpo 2011-03-11 23:52:19

+0

你認爲我的想法不過是沒有意義的,在許多這些git URL路徑中都有冒號,我直接從mediatemple文檔複製了這些。它的做法與通常的端口號指示器不同,我認爲。讓我知道如果我錯了。 – 2011-03-12 00:55:28

+2

我喜歡沒有的網址 - 它顯然無效,因爲「%ex」不是有效的百分比轉義。他們使用的位://但不遵循通用語法只是一個小問題,可能源於'ssh user @ host:path'語法(其中path是絕對的或相對於您的主目錄)。 – 2011-03-12 04:04:35

回答

10

這句法實際上是錯誤的,但它是一個有點像scp風格的語法,你可以在git的網址中使用,它的主機名從分離該主機上的路徑。 git clone documentation中列出了用於指定git URL的選項。在你的情況,你可能想的一個替代如下:

serveradmin%[email protected]:/home/45678/domains/git.example.com/html/example.git 

...或:

ssh://serveradmin%[email protected]/home/45678/domains/git.example.com/html/example.git 

在這兩種情況下,用戶名是serveradmin%example.com,主機名是example.com和主機上的路徑是/home/45678/domains/git.example.com/html/example.git

+0

等一下,語法錯在哪裏?你的第一個例子看起來就像我發佈的那個。隨意假定我什麼都不知道。並告訴我更多關於這個「你可以在git URL中使用的scp風格的語法」 - 我不知道那是什麼。如果您可以指向我的文檔,這會有所幫助。當我主動詢問有關這些冒號的問題時,我認爲它有一些特定的git特定或ssh特定的語法;我想我可能是對的,但到目前爲止還沒有一個明確的答案。 (我欣賞所有的答案,無論如何。) – 2011-03-13 06:54:16

+2

我的第一個例子在開始時沒有'ssh://',而你的那個沒有。你只能在版本*中使用':'而不使用'ssh://'。有關可用於引用git存儲庫的URL的唯一文檔位於我在答案中鏈接到的'git clone'手冊頁中。 'scp'是一個用於通過SSH複製文件的命令行工具,它恰好要求您將遠程系統上的文件位置指定爲'user @ host:filename'。由於'scp'被廣泛使用並且被人們所熟悉,git允許您使用它來指定存儲庫以及嚴格的URL版本。 – 2011-03-13 08:11:10

+0

謝謝澄清。在使用git之前,我從來沒有使用過scp,所以我不熟悉它;我感謝你的解釋。我接受這個答案。 – 2011-03-13 17:28:34

4

它分離(服務器的)從路徑的主機名(以回購)所解釋here

+0

感謝您的鏈接。它可能會提出更多的問題(對我而言),而不是解決問題。如果冒號是URI方案的一部分,並且URI方案如鏈接中所描述的那樣:':<分層部分> [? ] [#]'那麼方案名稱在哪裏?我認爲ssh:可能是這裏的計劃名稱。通常一個主機名是通過斜線與路徑分開的,對吧?我習慣於在端口號前面看到一個冒號,就像@harpo上面提到的那樣,但是一個獨立的冒號對我來說是新的。你告訴我這不是一個混帳的東西,而是一個URI的標準元素? – 2011-03-12 00:40:15

+0

查看git-clone手冊頁,它顯示它可能實際上是git支持的scp-like語法http://www.kernel.org/pub/software/scm/git/docs/git-clone.html – objects 2011-03-12 07:11:54

+0

我認爲你的回答可能是正確的,但是你的解釋(鏈接到一個包含大量關於URI的信息的頁面)比有幫助的更容易混淆。 – 2011-03-13 06:48:58

0

結腸是符號,其指示到GIT中的字符串定義要存儲庫後與。。。相互作用。

編輯:嗯發現

我們可以看到遠程添加如下:

git remote add [-t <branch>] [-m <master>] [-f] [--tags|--no-tags] [--mirror] <name> <url> 

和你的例子是:

git remote add repo_name ssh://serveradmin%[email protected]:/home/45678/domains/git.example.com/html/example.git 

其中 '名' 是 'repo_name'

和URL是大字符串

SSH://serveradmin%[email protected]:/home/45678/domains/git.example.com/html/example.git

當我們看到它有哪些更爲明顯ssh協議定義在開始。

在一個URL中,您可以定義冒號,而不用處理端口值,並且該協議的默認端口通常用作端口號,這似乎是在這裏發生的事情。

因此標記爲問題標記爲哈波的評論

+0

我想這可能是答案,但是如果沒有字符串,這意味着什麼? – 2011-03-12 00:45:53