網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
git-clone 將存儲(chǔ)庫(kù)克隆到新目錄
代碼格式如下:
git clone https://userName:password@鏈接
示例:
git clone -b develop --single-branch https://zhao:12345.com@*.git daima
# 如果用戶名使用的是郵箱,那么 @ 符號(hào)需要轉(zhuǎn)義成 %40,否則會(huì)無(wú)法識(shí)別郵箱,與 Git 倉(cāng)庫(kù)地址前面的 @ 造成沖突:
git clone https://zz@qq.com:123456@*/example.git
# 需要寫(xiě)成 【注】轉(zhuǎn)義僅僅是在命令行或者是代碼中需要。如果使用的是工具的話可以不用轉(zhuǎn)義,工具會(huì)幫我們進(jìn)行轉(zhuǎn)義。
git clone https://zz%40qq.com:123456@*/example.git
原因:
<?php
$userame='zz@qq.com';
echo urlencode($userame);
?>
zz%40qq.com
概述
Git命令使用
[root@master ~]# git clone -h
用法:git clone [選項(xiàng)] [--] <版本庫(kù)> [<路徑>]
-v, --verbose 更加詳細(xì)
-q, --quiet 更加安靜
--progress 強(qiáng)制顯示進(jìn)度報(bào)告
-n, --no-checkout 不創(chuàng)建一個(gè)檢出
--bare 創(chuàng)建一個(gè)裸版本庫(kù)
--mirror 創(chuàng)建一個(gè)鏡像版本庫(kù)(也是裸版本庫(kù))
-l, --local 從本地版本庫(kù)克隆
--no-hardlinks 不使用本地硬鏈接,始終復(fù)制
-s, --shared 設(shè)置為共享版本庫(kù)
--recursive 在克隆時(shí)初始化子模組
--recurse-submodules 在克隆時(shí)初始化子模組
--template <模板目錄>
模板目錄將被使用
--reference <版本庫(kù)> 引用版本庫(kù)
-o, --origin <名稱(chēng)> 使用<名稱(chēng)>而不是 'origin' 去跟蹤上游
-b, --branch <分支> 檢出<分支>而不是遠(yuǎn)程HEAD
-u, --upload-pack <路徑>
遠(yuǎn)程 git-upload-pack 路徑
--depth <深度> 創(chuàng)建一個(gè)指定深度的淺克隆
--single-branch 只克隆一個(gè)分支、HEAD 或 --branch
--separate-git-dir <git目錄>
git目錄和工作區(qū)分離
-c, --config <key=value>
在新版本庫(kù)中設(shè)置配置信息
描述
將存儲(chǔ)庫(kù)克隆到新創(chuàng)建的目錄中,為克隆存儲(chǔ)庫(kù)中的每個(gè)分支創(chuàng)建遠(yuǎn)程跟蹤分支(使用git branch --remotes
可見(jiàn)),并創(chuàng)建、簽出從克隆存儲(chǔ)庫(kù)當(dāng)前活動(dòng)的分支派生的初始分支。
克隆后,不帶參數(shù)的普通git提取將更新所有遠(yuǎn)程跟蹤分支,不帶參數(shù)的git提取將另外將遠(yuǎn)程主分支合并到當(dāng)前主分支(如果有的話)(當(dāng)給定--single-branch
時(shí)這是不真實(shí)的);
通過(guò)在 refs/remotes/origin
下創(chuàng)建對(duì)遠(yuǎn)程分支頭的引用,并通過(guò)初始化 remote.origin.url 和 remote.origin.fetch 配置變量來(lái)創(chuàng)建此默認(rèn)配置。
選項(xiàng)
-l
–local
當(dāng)要從中進(jìn)行克隆的存儲(chǔ)庫(kù)位于本地計(jì)算機(jī)上時(shí),此標(biāo)志會(huì)繞過(guò)常規(guī)的“Git感知”傳輸機(jī)制,并通過(guò)為 HEAD 以及對(duì)象和引用目錄內(nèi)的所有內(nèi)容創(chuàng)建副本以克隆存儲(chǔ)庫(kù)。盡可能將 .git/objects/目錄下的文件進(jìn)行硬鏈接以節(jié)省空間。
如果將存儲(chǔ)庫(kù)指定為本地路徑(例如/path/to/repo), --local 參數(shù)實(shí)質(zhì)上是不起作用的。如果將存儲(chǔ)庫(kù)指定為 URL,則忽略此標(biāo)志(不使用本地優(yōu)化)。指定 --no-local 將在給定 /path/to/repo 時(shí)覆蓋默認(rèn)值,而使用常規(guī) Git 傳輸方式。
–no-hardlinks
從本地文件系統(tǒng)上的存儲(chǔ)庫(kù)進(jìn)行克隆時(shí),強(qiáng)制復(fù)制 .git/objects 目錄下的文件,而不使用硬鏈接。如果您要備份存儲(chǔ)庫(kù),則可能需要這樣做。
-s
–shared
當(dāng)要克隆的存儲(chǔ)庫(kù)位于本地計(jì)算機(jī)上時(shí),不使用硬鏈接,而是自動(dòng)設(shè)置 .git/objects/info/alternates 與源存儲(chǔ)庫(kù)共享對(duì)象。生成的存儲(chǔ)庫(kù)開(kāi)始時(shí)沒(méi)有其自己的任何對(duì)象。
注意:這可能是危險(xiǎn)的操作;不要使用除非您了解它的功能。 如果您克隆您的存儲(chǔ)庫(kù)時(shí)使用此選項(xiàng), 然后在源存儲(chǔ)庫(kù)中刪除分支 (或使用任何其他使現(xiàn)有提交解除引用的 Git 命令), 某些對(duì)象可能會(huì)變得未引用(或懸空)。 這些對(duì)象可以通過(guò)常規(guī)的 Git 操作(例如 git commit)刪除。 它會(huì)自動(dòng)調(diào)用 git gc --auto。 如果這些對(duì)象已刪除并被克隆的存儲(chǔ)庫(kù)引用, 那么克隆的存儲(chǔ)庫(kù)將損壞。
請(qǐng)注意,在使用 --shared 選項(xiàng)克隆的存儲(chǔ)庫(kù)中運(yùn)行不帶 --local 選項(xiàng)的 git repack 命令會(huì)將源存儲(chǔ)庫(kù)中的對(duì)象復(fù)制到克隆存儲(chǔ)庫(kù)中的包中,從而消除使用 clone --shared 節(jié)省的磁盤(pán)空間。不過(guò)運(yùn)行 git-gc 是安全的,它默認(rèn)使用 --local 選項(xiàng)。
如果要斷開(kāi)用 --shared 克隆的存儲(chǔ)庫(kù)對(duì)其源存儲(chǔ)庫(kù)的依賴(lài)關(guān)系,只需運(yùn)行 git repack -a 即可將源存儲(chǔ)庫(kù)中的所有對(duì)象復(fù)制到克隆存儲(chǔ)庫(kù)中的一個(gè)包中。
–reference [-if-able] <存儲(chǔ)庫(kù)>
如果參考存儲(chǔ)庫(kù)位于本地計(jì)算機(jī)上,則自動(dòng)設(shè)置 .git/objects/info/alternates 以從參考存儲(chǔ)庫(kù)獲取對(duì)象。使用現(xiàn)有的存儲(chǔ)庫(kù)作為備用存儲(chǔ)庫(kù),則將需要從要克隆的存儲(chǔ)庫(kù)中復(fù)制較少的對(duì)象,從而降低了網(wǎng)絡(luò)和本地存儲(chǔ)成本。當(dāng)使用 --reference-if-able 時(shí),不存在的目錄會(huì)被警告跳過(guò),而不是中止克隆。
注意:請(qǐng)參閱--shared
選項(xiàng)的注釋?zhuān)约?--dissociate
選項(xiàng)。
–dissociate
從用 --reference 選項(xiàng)指定的參考存儲(chǔ)庫(kù)中借用對(duì)象僅是為了減少網(wǎng)絡(luò)傳輸,并在克隆后通過(guò)制作借用對(duì)象的必要本地副本來(lái)停止從對(duì)象借用。當(dāng)從已經(jīng)從另一個(gè)存儲(chǔ)庫(kù)借用對(duì)象的存儲(chǔ)庫(kù)進(jìn)行本地克隆時(shí),也可以使用此選項(xiàng):新存儲(chǔ)庫(kù)將從同一個(gè)存儲(chǔ)庫(kù)借用對(duì)象,并且該選項(xiàng)可用于停止借用。
-q
–quiet
悄悄操作。進(jìn)度不會(huì)報(bào)告給標(biāo)準(zhǔn)錯(cuò)誤流。
-v
–verbose
冗余運(yùn)行。不影響向標(biāo)準(zhǔn)錯(cuò)誤流報(bào)告進(jìn)度狀態(tài)。
–progress
默認(rèn)情況下附加到終端時(shí),會(huì)將進(jìn)度狀態(tài)報(bào)告給標(biāo)準(zhǔn)錯(cuò)誤流,除非指定了 --quiet 選項(xiàng)。即使標(biāo)準(zhǔn)錯(cuò)誤流未定向到終端,該標(biāo)志也會(huì)強(qiáng)制顯示進(jìn)度狀態(tài)。
–server-option=<option>
使用協(xié)議版本2進(jìn)行通信時(shí),將給定的字符串傳輸?shù)椒?wù)器。給定的字符串不得包含NUL或LF字符。服務(wù)器對(duì)服務(wù)器選項(xiàng)(包括未知選項(xiàng))的處理是取決于服務(wù)器。當(dāng)給出多個(gè)--server-option = <option>
時(shí),它們都按照命令行中列出的順序發(fā)送到另一端。
-n
–no-checkout
克隆完成后,不執(zhí)行磁頭簽出。
–bare
創(chuàng)建一個(gè)空的Git存儲(chǔ)庫(kù)。也就是說(shuō)不是創(chuàng)建<目錄>并將管理文件放在<目錄>/中。git使<目錄>本身成為$GIT_DIR。這顯然意味著不簽出,因?yàn)闆](méi)有地方可以簽出工作樹(shù)。此外遠(yuǎn)程的分支頭被直接復(fù)制到相應(yīng)的本地分支頭,而不將它們映射到refs/remotes/origin/使用此選項(xiàng)時(shí),既不會(huì)創(chuàng)建遠(yuǎn)程跟蹤分支,也不會(huì)創(chuàng)建相關(guān)的配置變量。
–sparse
初始化稀疏檢出文件,以便工作目錄僅從存儲(chǔ)庫(kù)根目錄中的文件開(kāi)始??梢孕薷南∈韬灣鑫募愿鶕?jù)需要擴(kuò)展工作目錄。
–filter=<過(guò)濾器定義>
使用部分克隆功能,并請(qǐng)求服務(wù)器根據(jù)給定的對(duì)象過(guò)濾器發(fā)送可訪問(wèn)對(duì)象的子集。使用 --filter時(shí),提供的< filter-spec >用于部分克隆過(guò)濾器。例如, --filter=blob:none將過(guò)濾掉所有blob(文件內(nèi)容)直到Git需要為止。此外 --filter=blob:limit=將過(guò)濾掉所有大小至少為< size >的blob。
–mirror
設(shè)置源存儲(chǔ)庫(kù)的鏡像。這意味著裸露。與 --bare 相比, --mirror不僅將源的本地分支映射到目標(biāo)的本地分支,還映射所有的引用(包括遠(yuǎn)程跟蹤分支、注釋)并設(shè)置一個(gè)refspec配置,這樣所有這些ref都會(huì)被目標(biāo)存儲(chǔ)庫(kù)中的git遠(yuǎn)程更新覆蓋。
-o <名稱(chēng)>
–origin <名稱(chēng)>
不使用遠(yuǎn)程名稱(chēng) origin 來(lái)跟蹤上游存儲(chǔ)庫(kù),而使用<名稱(chēng)>
。
-b <名稱(chēng)>
–branch <名稱(chēng)>
不將新創(chuàng)建的 HEAD 指向克隆存儲(chǔ)庫(kù)的 HEAD 所指向的分支,而是指向<名稱(chēng)>分支。在非裸倉(cāng)庫(kù)中,這是將被檢出的分支。
--branch 也可以使用標(biāo)簽并在生成的存儲(chǔ)庫(kù)中的提交時(shí)分離 HEAD。
-u <上傳包>
–upload-pack
如果指定了要克隆的存儲(chǔ)庫(kù),且可以通過(guò) ssh 訪問(wèn)該存儲(chǔ)庫(kù),這將為另一端運(yùn)行的命令指定非默認(rèn)路徑。
–template = <模板目錄>
指定將使用模板的目錄;
-c <鍵> = <值>
–config <鍵> = <值>
在新創(chuàng)建的存儲(chǔ)庫(kù)中設(shè)置一個(gè)配置變量;這將在存儲(chǔ)庫(kù)初始化后立即生效,但在獲取遠(yuǎn)程歷史記錄或簽出任何文件之前生效。該密鑰的格式與git-config所預(yù)期的格式相同(例如core.eol=true)。如果同一個(gè)鍵有多個(gè)值,每個(gè)值都將被寫(xiě)入配置文件。例如這使得向源遙控器添加額外的fetch refspecs變得安全。
由于當(dāng)前實(shí)現(xiàn)方式的限制,某些配置變量要等到初始獲取和簽出后才能生效。已知不會(huì)生效的配置變量有:remote.<s名稱(chēng)> .mirror
和remote.<名稱(chēng)> .tagOpt
。如要修改應(yīng)改用相應(yīng)的 --mirror 和 --no-tags 選項(xiàng)。
–depth <深度>
創(chuàng)建一個(gè)歷史記錄被截?cái)酁橹付ㄌ峤淮螖?shù)的“淺”克隆。暗含 --single-branch 選項(xiàng),除非給出 --no-single-branch 來(lái)獲取所有分支頂端附近的歷史記錄。如果要淺層克隆子模塊,還可以使用 --shallow-submodules 選項(xiàng)。
–shallow-since=< date >
創(chuàng)建淺克隆,只包含指定的時(shí)間之后的歷史記錄。
–shallow-exclude=
創(chuàng)建一個(gè)有歷史的淺克隆,不包含可以被指定遠(yuǎn)程分支或標(biāo)簽訪問(wèn)的提交。本選項(xiàng)可以使用多次。
–[no-]single-branch
僅克隆直到單一分支末尾的歷史,該分支被 --branch 選項(xiàng)或主分支遠(yuǎn)程 HEAD 指定。被創(chuàng)建倉(cāng)庫(kù)之后的抓取將只更新在克隆時(shí)被指定的遠(yuǎn)程跟蹤分支。如果在 --single-branch 克隆時(shí),遠(yuǎn)程 HEAD 未指向任何分支,則不會(huì)創(chuàng)建遠(yuǎn)程跟蹤分支。
–no-tags
不克隆任何標(biāo)簽,并在配置中設(shè)置 remote.<remote>.tagOpt=--no-tags
,確保將來(lái)的git pull
和git fetch
操作不會(huì)跟隨任何標(biāo)簽。隨后的顯式標(biāo)簽抓取仍將起作用。
可以與 --single-branch 結(jié)合使用,以克隆和維護(hù)除單個(gè)克隆分支外沒(méi)有其他引用的分支。這在例如維護(hù)某些倉(cāng)庫(kù)的默認(rèn)分支的最小克隆以進(jìn)行搜索索引時(shí)有用。
–recurse-submodules [=< pathspec >]
創(chuàng)建克隆后,根據(jù)提供的路徑規(guī)范初始化并克隆其中的子模塊。如果未提供路徑規(guī)范,則將初始化并克隆所有子模塊。對(duì)于由多個(gè)條目組成的路徑規(guī)范,可以多次賦予此選項(xiàng)。生成的克隆將把 submodule.active
設(shè)為提供的路徑規(guī)范。如果未提供路徑規(guī)范,生成的克隆將把 submodule.active
設(shè)為 “.” (表示所有子模塊)。
子模塊使用其默認(rèn)設(shè)置進(jìn)行初始化和克隆。這等效于克隆完成后立即運(yùn)行 git submodule update --init --recursive <路徑規(guī)范>。如果克隆的倉(cāng)庫(kù)沒(méi)有工作區(qū)/檢出(即給出了 --no-checkout/-n,–bare 或 --mirror
中的任何一個(gè)選項(xiàng))則忽略此選項(xiàng)。
–[no-]shallow-submodules
所有克隆的子模塊都將是淺克隆,深度為1。
–[no-]remote-submodules
克隆的所有子模塊將使用子模塊的遠(yuǎn)程跟蹤分支的狀態(tài)來(lái)更新子模塊,而不是超級(jí)項(xiàng)目的已記錄SHA-1。等同于將--remote
傳遞給 git submodule update。
–separate-git-dir=<git目錄>
不將克隆的存儲(chǔ)庫(kù)放置在原處,而是將克隆的存儲(chǔ)庫(kù)放置在指定的目錄中,然后在此處建立與文件系統(tǒng)無(wú)關(guān)的Git符號(hào)鏈接。這可以將Git倉(cāng)庫(kù)與工作區(qū)分離。
-j < n >
–jobs < n >
同時(shí)抓取的子模塊數(shù)。默認(rèn)為 submodule.fetchJobs 選項(xiàng)。
<倉(cāng)庫(kù)>
要克隆的(可能是遠(yuǎn)程的)倉(cāng)庫(kù)。
<目錄>
要克隆到的新目錄的名稱(chēng)。如果未明確指定目錄,則使用源倉(cāng)庫(kù)中的“人性化”部分(對(duì)于 /path/to/repo.git 而言為 repo;對(duì)于 host.xz:foo/.git 而言為 foo)。僅當(dāng)目錄為空時(shí)才允許克隆到現(xiàn)有目錄。
GIT URLS
通常 URL 包含有關(guān)傳輸協(xié)議,遠(yuǎn)程服務(wù)器的地址以及存儲(chǔ)庫(kù)路徑的信息。對(duì)于某些傳輸協(xié)議,一些信息可能會(huì)缺失。
Git 支持 ssh,git,http 和 https 協(xié)議(此外可以使用 ftp 和 ftps 進(jìn)行抓取,但這效率低下且不建議使用;請(qǐng)勿使用)。
本地傳輸(即 git://URL)不進(jìn)行身份驗(yàn)證,在不安全的網(wǎng)絡(luò)上應(yīng)謹(jǐn)慎使用。
格式
ssh://[user@]host.xz[:port]/path/to/repo.git/
git://host.xz[:port]/path/to/repo.git/
http[s]://host.xz[:port]/path/to/repo.git/
ftp[s]://host.xz[:port]/path/to/repo.git/
ssh 協(xié)議也可以使用類(lèi)似 scp 的語(yǔ)法:
[user@]host.xz:path/to/repo.git/
僅當(dāng)?shù)谝粋€(gè)冒號(hào)之前沒(méi)有斜杠時(shí)才能識(shí)別此語(yǔ)法。這有助于區(qū)分包含冒號(hào)的本地路徑。例如可以將本地路徑 foo:bar
指定為絕對(duì)路徑,或者將 ./foo:bar
指定為絕對(duì)路徑,以避免被誤識(shí)別為 ssh url。
ssh 和 git 協(xié)議還支持 ~username 擴(kuò)展:
ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/
git://host.xz[:port]/~[user]/path/to/repo.git/
[user@]host.xz:/~[user]/path/to/repo.git/
對(duì)于本地存儲(chǔ)庫(kù)(Git 本身也支持),可以使用以下語(yǔ)法:
/path/to/repo.git/
file:///path/to/repo.git/
這兩種語(yǔ)法幾乎是等效的,除了前者暗含 --local 選項(xiàng)。git clone,git fetch 和 git pull,但不包括 git push,也將接受合適的捆綁文件。
當(dāng) Git 不知道如何處理某種傳輸協(xié)議時(shí),它會(huì)嘗試使用 remote- <傳輸方式> 遠(yuǎn)程幫助程序(如果存在)。要顯式請(qǐng)求遠(yuǎn)程幫助程序,可以使用以下語(yǔ)法:
<傳輸方式>::<地址>
其中 <地址> 可以是路徑,服務(wù)器與路徑,也可以是可被調(diào)用的特定遠(yuǎn)程幫助程序識(shí)別的類(lèi)似于 URL 的任意字符串。
如果存在大量類(lèi)似名稱(chēng)的遠(yuǎn)程存儲(chǔ)庫(kù),并且您要為其使用不同的格式(這樣您使用的 URL 將被重寫(xiě)為有效的 URL),則可以創(chuàng)建以下形式的配置:
[url "<actual url base>"]
insteadOf = <other url base>
例如有如下:
[url "git://git.host.xz/"]
insteadOf = host.xz:/path/to/
insteadOf = work:
URL 諸如 “work:repo.git” 或 “host.xz:/path/to/repo.git” 會(huì)在任何 URL 類(lèi)似于 git://git.host.xz/repo
的上下文中重寫(xiě)。
如果要重寫(xiě)僅用于推送的 URL,可以創(chuàng)建表單的配置部分:
[url "<actual url base>"]
pushInsteadOf = <other url base>
例如,有如下:
[url "ssh://example.org/"]
pushInsteadOf = git://example.org/
類(lèi)似于 git://example.org/path/to/repo.git
的 URL 會(huì)被重寫(xiě)為 ssh://example.org/path/to/repo.git
用于推送。但拉取代碼時(shí)仍然使用原始的 URL。
實(shí)例
從上游克?。?/p>
git clone git://git.kernel.org/pub/scm/.../linux.git my-linux
cd my-linux
make
制作一個(gè)從當(dāng)前目錄借用的本地克隆,而無(wú)需進(jìn)行檢出:
git clone -l -s -n . ../copy
cd ../copy
git show-branch
從上游克隆時(shí)借用本地目錄:
git clone --reference /git/linux.git \
git://git.kernel.org/pub/scm/.../linux.git \
my-linux
cd my-linux
創(chuàng)建一個(gè)裸倉(cāng)庫(kù),以將您的更改發(fā)布給公眾:
git clone --bare -l /home/proj/.git /pub/scm/proj.git
Never deny yourself and believe that you are the best!
原文鏈接:https://blog.csdn.net/qq_50573146/article/details/125850625
相關(guān)推薦
- 2022-10-31 關(guān)于Golang標(biāo)準(zhǔn)庫(kù)flag的全面講解_Golang
- 2022-06-19 rsa詳解及例題及python算法_python
- 2022-04-30 python?format格式化和數(shù)字格式化_python
- 2022-10-20 flutter?material?widget組件之信息展示組件使用詳解_Android
- 2022-07-07 詳解Git?的?rebase?命令使用方法_相關(guān)技巧
- 2022-11-11 react中代碼塊輸出,代碼高亮顯示,帶行號(hào),能復(fù)制的問(wèn)題_React
- 2022-08-23 Python一階馬爾科夫鏈生成隨機(jī)DNA序列實(shí)現(xiàn)示例_python
- 2022-08-08 基于Redis緩存數(shù)據(jù)常見(jiàn)的三種問(wèn)題及解決_Redis
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支