簡體   English   中英

將本地目錄與現有git存儲庫同步

[英]syncing a local directory with an existing git repository

標題可能聽起來像重復但我無法找到我的特定問題的答案。

我想在我的本地機器上克隆一個git存儲庫。 但是,當我嘗試使用shell執行此操作時,我收到錯誤。 大多數文件正在檢出但由於某種原因,其中一個圖像文件導致了問題,我收到錯誤“致命:無法檢查工作樹”和“警告:克隆成功,但結帳失敗”。 所以我現在做的是從github下載repo文件作為zip文件並將它們解壓縮到我的本地目錄中。 所以現在我的本地目錄中有所有文件,但是本地目錄沒有連接到github上的repo。 是否有一個命令可以實現這一目標?

這個問題似乎不完整。 在這種情況下, git clone的輸出應該如下所示:

 <some errors specific to your situation here> ... fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry the checkout with 'git checkout -f HEAD' 

首先,具體的錯誤(在fatal: ...的消息上面fatal: ... )應該有助於理解發生了什么以及如何解決它。

其次,您可以按照說明操作,運行git status以查看檢出的內容,然后嘗試git checkout -f HEAD來修復它。


warning: Clone succeeded, but checkout failed.一些原因warning: Clone succeeded, but checkout failed. 我見過:

  • 存儲庫包含符號鏈接,您要簽出的文件系統不支持符號鏈接。 使用GitHub倉庫的拉鏈,查看下面可能有用的替代方案。

  • 存儲庫包含一些深層目錄層次結構,這樣在當前目錄級別進行檢出將導致路徑太長,導致本地文件系統不支持。 嘗試git clone到你有權訪問的最短路徑。 例如文件系統根目錄。 克隆成功后,您可以嘗試將其移動到其他位置。 如果這不起作用,那么下面的技術也不會起作用,甚至不需要嘗試。

  • 其他? 最好包括在問題中。 下面的技術可能會或可能不會起作用,我不知道確切原因。


失敗的git clone的結果應該是至少部分完整的工作樹。 由於存儲庫來自GitHub,您可以下載內容的zip,您可以在失敗的克隆之上解壓縮。 結果應該是一個工作樹,其內容與master匹配,你也將擁有Git歷史記錄,如“Clone succeeded”消息所暗示的那樣。 git status可能會報告一些更改,可能是由於常規文件替換了符號鏈接,或者是不同的文件系統權限,但似乎這是您希望通過問題達到的狀態。


作為獲取存儲庫歷史記錄的另一種替代方法,您可以將下載的zip初始化為新的Git存儲庫,添加遠程存儲庫,獲取並重置它:

unzip project.zip
cd project
git init
git remote add origin url_on_github
git fetch origin
git reset origin/master
git status

git fetch步驟將獲取歷史記錄。 如果您在下載zip后沒有對master進行新的提交,那么工作樹的內容應該與origin/master的最新內容相同。 git reset origin/master將在工作樹和它對應的歷史記錄中的點之間建立關聯。

理想情況下, git status會告訴您工作樹沒有任何更改。 根據git clone失敗的原因,情況可能並非總是如此。 您可以嘗試使用git checkout -f HEAD修復git checkout -f HEAD ,盡管它可能會因同樣的錯誤而失敗。

如果您使用的是Windows,還要檢查檢查是否由於路徑長度過長而失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM