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