我想試試這個,但不知道是否可行。通常情況下,為了防止檔案/檔案夾被git追蹤,以及從本地推送到遠程,你會添加一個.gitignore檔案 - gitHub doc。
我想問的是另一種方式。是否有一個檔案、配置或設定可以忽略遠程版本庫中的檔案/檔案夾并阻止下載到本地?
由于 @IMSoP 的回應,第一段被編輯。
uj5u.com熱心網友回復:
不:正如已經指出的,Git是在逐個提交的基礎上作業的,當你使用git clone或git fetch時,1你從其他Git獲得了commits。 這些提交包含的檔案,作為快照。
是的:一旦你的倉庫里有其他 Git 倉庫的提交,你就可以從這些提交中提取單個檔案。 這沒有自動的方法,但你可以設定自己的腳本。 要注意的是,有些Git操作會讀取整個提交,并在你的作業樹中填充大量不需要的檔案。
你最好的辦法可能是在其他地方克隆倉庫,然后把感興趣的檔案帶過來。
uj5u.com熱心網友回復: 這不是一個標準的作業流程,所以沒有方便的命令。你可以讓Git做到這一點,一旦你掌握了 "可擴展的不可改變的快照的dag,并貼上標簽 "的口號,這甚至是相當容易的,但所有的便利命令都被設定為期望達到一個完整的歷史,所以你通常必須避免它們,并以每個命令為你呼叫的(非常少)核心命令來取代它們。
明確一點:關于我使用的命令,請參見Git檔案,以及 就拿aosp平臺的基礎 repo來說,如果你想看 這一點幾乎是曲徑通幽: 現在你已經獲取了整個歷史的最基本的草圖,并且只獲取了 如果你只是想看看,你就完成了1。對于你已經檢查出來的東西的補丁作業,所有通常的處理提交的便利命令將需要被簡短的核心命令 "不不只做這一部分 "序列所取代,就像上面的read-tree,而不是通常的檢查, 只是為了討論一些具體的東西,讓我們假設你有一些只涉及這個目錄的檔案修復要做,或者我們可以想象這確實是一個可分離的歷史,只是由于某種原因沒有被正式分離,而你想在它上面打補丁。不管怎么樣。 首先:讓我們在 mystuff 分支上做這件事: 接下來,
1盡管代碼被直接內置到clone命令中,git clone使用git fetch,所以在某種程度上這是多余的。
git help revisions中的修訂語法,如@{U} aka @{u} aka @{upstream}`。事實證明,如果你在任何當前正在查看或構建的快照中維護一個碎片的索引,你就可以用一個可擴展的不可變快照的dag來做所有dvcs需要做的事情,并貼上標簽。想象一下加里-奧德曼大喊 "一切!" 。Git所做的一切都在擴展、分析和處理這些資料的碎片。這個結構本身是很愚蠢的。你能用它做什么,就不是了。
core目錄,完整的歷史足夠大,對于隨意克隆來說是很痛苦的,所以如果你在探索,你可能只想看它的一部分。
git clone -n --filter=tree:0 https://github.com/aosp-mirror/platform_frameworks_base.git
cd !$:t:r # `cd platform_frameworks_base`的歷史擴展
git read-tree -um @:core
core目錄的最新副本。-n開關告訴git clone不要做。
git checkout -b mystuff # 當前作業的新名稱
git branch -u master@{u} # 追蹤主分支所追蹤的東西。 # 追蹤主分支所追蹤的東西
git commit是一個方便的命令,為了方便起見,它可以列印出從上級提交中改變的內容摘要,這在你撰寫提交資訊時是很好的,但這意味著它會獲取當前提交中你剛剛花了一些小功夫不獲取的部分。但你真的不想永遠避免git commit,所以讓我們告訴git我們要做什么,就在這第一次:git reset
git reset --soft $(git commit-tree -p @ -m mystuff @:core)
git tag mystuff-base
在進一步的git commit之后,就可以正常進行了,便利命令所期望的一切都已經設定好了。
你可以在任何地方推送你的剪切分支,但當人們與之合并時,他們需要指定-Xsubtree(或-Xsubtree=core,Git很擅長計算這個,但你可以直接告訴它你指的是什么子樹)合并選項,因為正如我所說,這不是一個標準作業流程,Git
默認情況下不會花費任何精力去尋找這樣的可能的提升/分裂點。
如果你想讓自己的分支與最新的主提示保持一致,一個普通的git merge將查看最新的主提示和合并基礎。兩個提交的全部內容。這是你不希望看到的。為了避免這種情況,
git fetch # 遵循上面那個`git clone'所設定的過濾。
git merge $(git commit-tree -p mystuff-base -p @{u} -m 'core slice' @{u}:core)
git tag -f mystuff-base
這就是它的全部內容:你現在知道的足夠多了,可以只提取、合并和推送你正在處理的內容,而且只提取你真正需要看的部分。
1如果你只是在看一個子目錄,而這就是全部,你甚至可以在克隆中添加--depth=1來獲得甚至不是完整歷史的草圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325031.html
標籤:
下一篇:如何在字典中使用多個標準
