我有一個使用git的項目,我只想克隆或拉一個特定的目錄,就像myproject/javascript就像subversion一樣。
進行一些更改,提交併再次推回。
有可能嗎?如何用git拉特定目錄
回答
- cd到你的回購副本頂部
git fetch
git checkout HEAD path/to/your/dir/or/file
- 其中 「
path/...
」 略低於含回購根(3)開始在目錄中的 「.../file
」
- 其中 「
這就是答案......謝謝! – Paul 2011-01-27 06:38:02
剛剛意識到我誤解了這個問題。我的回答是解決如何簽出單個文件,然後可以修改和提交。 – vergueishon 2011-02-04 20:20:41
您提到了問題的標題,這已經夠好了。這只是救了我,所以就我而言,這是正確的答案 - 尤其是因爲這是Google在這個問題上的熱門話題。 – Morgon 2011-11-01 14:39:32
這是不可能的。你需要拉所有的存儲庫或沒有。
即使您需要*獲取*所有內容,在這種情況下,是否會引起稀疏檢出工作樹的興趣?見http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991#2416991 – VonC 2010-03-11 14:22:46
只是爲了增加這一點,你不能只拉一個目錄的原因是因爲git使用數據語義跟蹤,而不是文件語義跟蹤,因此您可以無縫地將代碼(或其他數據)移入和移出文件,而無需告知源跟蹤系統(直到您更新了課程)。因此,代碼可以移動無縫地進出目錄,因此只抓取一個目錄並沒有多大意義。希望這可以幫助。 – OmnipotentEntity 2010-10-29 04:38:28
vergueishon的答案在下面爲我工作。 – Paul 2011-01-27 06:38:49
Shingara是對的。 this mailing list thread中給出了這種行爲的解釋。如果你真的想這樣做,你可以使javascript dir成爲一個子模塊。
你沒有在你的評論中回答這個問題,你提供了一個鏈接。如果鏈接失效,您的鏈接無效,您的答案也是如此。此外,鏈接上的內容不夠簡潔,易於閱讀。如果您總結或簡化鏈接中的內容,您的答案會很有幫助。 – leetNightshade 2017-02-02 20:44:10
有時候,你只是想看看以前的文件副本,而不需要通過diffs。
在這種情況下,對存儲庫進行克隆和檢出您感興趣的特定提交併查看該克隆存儲庫中的子目錄一樣簡單。因爲一切都是本地的,你可以在完成後刪除這個克隆。
我明白了。我會嘗試創建子模塊,看看是否適合我。我會報告結果。 編輯: 稀疏結帳和子模塊爲我制定。我用閱讀有關(由VonC和米歇爾·詹森給出)的鏈接:
How to git-pull all but one folder
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
git的子模塊功能並沒有特別好地實現。他們可能非常尷尬和困惑的工作。我個人會很好地解決git子模塊,直到解決所有的問題。 – user2268788 2015-05-07 21:03:56
也許這個命令可以幫到你:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
「ET外星人瞧」
這會下載一個特定的文件目錄爲了存檔的目的,這不會提取可以修改和推回的副本。 – leetNightshade 2017-02-02 20:41:37
在一個空目錄:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
當接受的答案沒有時,這對我有用。 – 2016-08-14 14:39:31
這是OP的正確答案。 – 2016-11-08 16:42:37
這工作,如果你只是想使用遠程版本的文件來替換本地文件,我認爲 – John 2018-01-16 10:42:59
經過多番尋找一個答案,沒有找到,放棄,再等等努力,我終於找到了解決這在另一個線程SO:
How to git-pull all but one folder
複製粘貼那裏的東西:
git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master
要完成OP想要的工作(僅在一個目錄上工作),只需將該目錄添加到.git/info/sparse-checkout
即可,請執行上述步驟。
許多感謝@cforbish!
我在這裏發佈它主要是因爲每當我嘗試谷歌如何做到這一點,這是一個頂級的結果,並且該線程是甚至沒有接近顯示。 :(我感覺糟糕的複製粘貼,但我認爲這是最佳做法? – msb 2017-05-10 20:48:49
- 1. Git拉和指定目錄?
- 2. 如何使用eclipse從git克隆特定的子目錄
- 3. Git結帳到特定目錄
- 4. 如何更新git存儲庫上的特定目錄?
- 5. 如何在特定目錄上對git進行比較
- 6. 如何禁用特定目錄中的特定mod_security規則?
- 7. 使用git抓取/更新回購目錄中的特定文件到目錄
- 8. git - 如何刪除目錄
- 9. 如何壓縮.git目錄中的git
- 10. 從git repo中拉出一個目錄
- 11. Git拉取決於當前目錄
- 12. 的Git拉在「遠程」目錄
- 13. 使用git bundle創建備份到特定目錄的repos?
- 14. 使用GitPython列出特定git提交的目錄的內容
- 15. 使用SourceTree的GIT簽出特定目錄
- 16. slocate - 如何搜索特定目錄
- 17. circleCI - 如何當在特定的目錄
- 18. 如何避免特定目錄的RewriteRule?
- 19. 如何手動在特定目錄
- 20. git sparsecheckout - 如何拉入不同的目錄
- 21. 如何從其他目錄使用git?
- 22. git只拉一個特定標籤
- 23. git - 從特定分支拉動
- 24. 如何隱藏.git項目目錄?
- 25. 如何檢查目錄下是否存在特定目錄?
- 26. 如何查找某個目錄中存在的特定目錄
- 27. Git:如何拉或只取特定的變化
- 28. 如何使用make在特定目錄中創建目標?
- 29. 如何將當前工作目錄更改爲特定目錄並在特定目錄下執行程序?
- 30. 用git(特別是github)存檔或克隆特定的文件/目錄
稀疏結帳可能會讓您感興趣(即使您仍然需要獲取所有內容):請參閱http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991# 2416991 – VonC 2010-03-11 14:21:37