![](/img/trans.png)
[英]On Windows git: “error: Sparse checkout leaves no entry on the working directory”
[英]Git Sparse Checkout Leaves No Entry on Working Directory
我正在嘗試使用 sparse-checkout 從 BitBucket 存儲庫中簽出一個目錄,但是當我嘗試拉取時出現“稀疏簽出在工作目錄上沒有條目”錯誤。
BitBucket 存儲庫具有以下目錄結構:
我在 Windows 7 筆記本電腦上的 E:\Temp\SomeProjectRepo 上有一個本地目錄。 我只想從 BitBucket 存儲庫中簽出/拉出“MyProject”到我的本地目錄,這樣我就可以在 E:\Temp\SomeProjectRepo\MyProject 上工作。
所以我創建了“E:\Temp\SomeProjectRepo”並在 DOS 中執行了以下操作:
cd E:\Temp\SomeProjectRepo
git remote add origin https://bitbucket.org/blah/blah
git init
git config core.sparsecheckout true
echo MyProject >.git/info/sparse-checkout
git pull origin master
在第 6 步,我得到“稀疏結帳在工作目錄上沒有條目”。 我在第 5 步中嘗試了不同的語法(例如MyProject\
、 SomeProjectRepo\*
、 SomeProjectRepo\MyProject\
等),但都沒有奏效。
如何使用 sparse-checkout (或任何其他工具)僅在“ MyProject
”上工作?
好的,我開始工作了。 正如我所料,由於第 5 步,它不起作用。
下面的行現在有效:
echo "MyProject/*"> .git/info/sparse-checkout
重要的是使用/
,使用*
並且在目錄末尾不留空格。
然后你可以再次拉取或結帳分支( git checkout master
)。
在Windows 上, echo "..." > outfile
命令以默認系統編碼創建文件。 Git 無法處理,它要求文件為ASCII 。
將現有文件修改為 ASCII,假設您已經創建了它並且它不起作用:
Set-Content .git\info\sparse-checkout "MyProject/*" -Encoding Ascii
或者從一開始就用正確的編碼創建文件:
echo MyProject/* | out-file -Encoding Ascii .git/info/sparse-checkout
如果你和我一樣在 windows 上工作
你不應該在 sparse-checkout 文件中得到引號,它不會工作,需要在路徑的末尾使用 /*
這對我有用
echo src/* >> .git/info/sparse-checkout
Windows Git 2.25 注意
2.25 包含git sparse-checkout
功能來前端一些這項工作。 但是,據我所知,它以 UTF8 格式寫入稀疏結帳文件,這與 Willem 指出的問題相同
我在這個線程中使用了 powershell 解決方案來強制 ascii https://stackoverflow.com/a/55158885/12927399
只是為git sparse-checkout
命令提供一個陷阱警告!
就我而言,我試圖提取的特定文件夾尚不存在於存儲庫中。 所以我必須做一個包含文件夾的推送(來自構建的 NuxtJS 項目的'dist'文件夾),然后錯誤消失了,稀疏結帳按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.