最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Git拉取指定文件或者文件夾的實(shí)現(xiàn)方式

 更新時(shí)間:2025年11月24日 08:53:35   作者:星光落入你灰蒙蒙的眼  
Git拉取指定文件或文件夾的步驟包括:初始化倉庫、設(shè)置遠(yuǎn)程倉庫地址、啟用SparseCheckout模式、設(shè)置要拉取的目錄模式、拉取指定目錄,在操作過程中可能會(huì)遇到權(quán)限問題和分支同步問題,需要根據(jù)實(shí)際情況進(jìn)行調(diào)整

Git拉取指定文件或者文件夾

在進(jìn)行項(xiàng)目開發(fā)的時(shí)候,有時(shí)候會(huì)有這樣的需求那就是:

我們只希望從Git倉庫里取指定的文件或者文件夾出來。在SVN里面,這非常容易實(shí)現(xiàn),因?yàn)镾VN基于文件方式存儲(chǔ),而Git卻是基于元數(shù)據(jù)方式分布式存儲(chǔ)文件信息的,它會(huì)在每一次Clone的時(shí)候?qū)⑺行畔⒍既』氐奖镜兀聪喈?dāng)于在你的機(jī)器上生成一個(gè)克隆版的版本庫。因此在Git1.7.0以前,這無法實(shí)現(xiàn),但是幸運(yùn)的是在Git1.7.0以后加入了Sparse Checkout模式,這使得Check Out指定文件或者文件夾成為可能。

倉庫只有一個(gè)的情況下,只想拉取某個(gè)目錄文件;其他文件沒用到的會(huì)很浪費(fèi)時(shí)間;

關(guān)鍵:git的sparse checkout模式

理論

github.io

“Sparse checkout” 允許稀疏地填充工作目錄。它使用 skip-worktree(參見git-update-index(1))告訴 Git 工作目錄上的文件是否值得查看。

git read-tree”和其他基于合并的命令(“git merge”、“git checkout”……)可以幫助維護(hù)跳過工作樹位圖和工作目錄更新。$GIT_DIR/info/sparse-checkout用于定義跳過工作樹參考位圖。當(dāng)“git read-tree”需要更新工作目錄時(shí),它會(huì)根據(jù)這個(gè)文件重新設(shè)置索引中的skip-worktree位,它使用與.gitignore文件相同的語法。如果條目與此文件中的模式匹配,則會(huì)在該條目上設(shè)置 skip-worktree。否則 skip-worktree 將被取消設(shè)置。

然后它將新的跳過工作樹值與前一個(gè)值進(jìn)行比較。如果 skip-worktree 從 unset 變?yōu)?set,它將添加相應(yīng)的文件。如果它從設(shè)置變?yōu)槲丛O(shè)置,則該文件將被刪除。

雖然$GIT_DIR/info/sparse-checkout通常用于指定哪些文件在其中。您還可以使用否定模式指定哪些文件不在其中。

例如,要?jiǎng)h除“不需要的”文件:

* 
!不需要的

另一個(gè)棘手的事情是當(dāng)您不再需要sparse checkout完全重新填充工作目錄。

您不能只禁用“sparse_checkout”,因?yàn)?skip-worktree 仍在索引中,并且您的工作目錄仍然很少填充。

您應(yīng)該使用$GIT_DIR/info/sparse-checkout文件內(nèi)容重新填充工作目錄,如下所示:

*

然后您可以禁用Sparse_checkout。默認(rèn)禁用“git read-tree”和類似命令中的Sparse checkout支持。

您需要打開core.sparseCheckout以獲得Sparse checkout支持

大致步驟:

1.本地新建文件夾或者執(zhí)行命令

mkdir project && cd project

2.目錄初始化

git init

3.設(shè)置遠(yuǎn)程倉庫地址(將本地倉庫關(guān)聯(lián)到遠(yuǎn)程倉庫)

git remote add -f origin <origin_url>

4.設(shè)置sparse checkout模式(稀疏檢出),允許克隆子目錄

git config core.sparsecheckout true		//config:參數(shù)是用來配置git環(huán)境的
# 上面的代碼會(huì)幫助我們創(chuàng)建一個(gè)空的本地倉庫,同時(shí)將遠(yuǎn)程Git Server URL加入到Git Config文件中。

5.設(shè)置指定拉取的目錄( *是通配符,!是反選;例如 clients/ 表示clients目錄下所有)

echo 你要的文件名/目錄 >> .git/info/sparse-checkout

6.拉取

git pull origin master
# 解釋
push:將本地倉庫與遠(yuǎn)程倉庫合并
-u:將本地倉庫分支與遠(yuǎn)程倉庫分支一起合并,就是說將master的分支也提交上去,這樣你就可以在遠(yuǎn)程倉庫上看到你在本地倉庫的master中創(chuàng)建了多少分支。
不加這個(gè)參數(shù)只將當(dāng)前的master與遠(yuǎn)程的合并,沒有分支的歷史記錄,也不能切換分支
origin:遠(yuǎn)程倉庫的意思,如果這個(gè)倉庫是遠(yuǎn)程的那么必須使用這個(gè)選項(xiàng)
master:提交本地matser分支倉庫

注意: fatal: Couldn’t find remote ref master;

表示主線名稱不是master,可以通過分支命令查看git branch -a
git branch -a
remotes/origin/main
根據(jù)上面提示,主線名稱是main,則執(zhí)行
git pull origin main

7.刪除本地倉庫(.git文件就不在了)

 rm -rf .git

8.track本地遠(yuǎn)程相同命名

如果遠(yuǎn)程新建了一個(gè)分支,本地沒有該分支。

可以利用 git checkout --track origin/branch_name ,這時(shí)本地會(huì)新建一個(gè)分支名叫 branch_name ,會(huì)自動(dòng)跟蹤遠(yuǎn)程的同名分支 branch_name。

git的本地分支關(guān)聯(lián)遠(yuǎn)程分支(remtotes/origin/news為遠(yuǎn)程分支名稱)

git branch --set-upstream-to remotes/origin/news

9.fetch本地自定義命名

例如:將gitLab 上的dev分支拉取到本地

  • 與遠(yuǎn)程倉庫建立連接:git remote add origin XXXXX.git
  • 使用git branch 查看本地是否具有dev分支
  • 如果沒有 git fetch origin dev
  • git checkout -b dev origin/dev在本地創(chuàng)建分支dev并切換到該分支
  • git pull origin dev就可以把gitLab上dev分支上的內(nèi)容都拉取到本地了

10.git回退版本

git log q					退出查看
git reset --hard XXXX 		加上目標(biāo)版本號(hào)命令將版本回退
git push -f -u origin XXX 	提交到指定分支

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

鹤山市| 疏附县| 武邑县| 铜鼓县| 剑河县| 永登县| 福贡县| 安化县| 开封县| 陈巴尔虎旗| 仲巴县| 昂仁县| 淄博市| 上杭县| 郎溪县| 大田县| 武强县| 天峨县| 依安县| 克拉玛依市| 馆陶县| 双桥区| 永修县| 调兵山市| 育儿| 延津县| 屯门区| 莒南县| 思南县| 定兴县| 崇义县| 平塘县| 吉木萨尔县| 黔西县| 体育| 平潭县| 三亚市| 垣曲县| 龙山县| 锡林浩特市| 四会市|