簡體   English   中英

Git從特定目錄結帳

[英]Git checkout from a specific directory

在構建應用程序時,我們首先從CVS存儲庫的目錄中獲取代碼然后構建它。 所以在Git中,我們有類似的東西嗎? 我只想從一個特定的Git倉庫處理結賬,然后構建我們的代碼。 沒有本地倉庫維護,沒有。 只是代碼結帳。

我知道有一種叫做“稀疏結賬”的東西。 我們有什么更簡單的嗎?

我的問題是這個構建腳本可以在任何服務器上運行。 因此,如果我選擇稀疏結賬,我將不得不繼續每台服務器,設置Git並告訴它如何進行稀疏結賬。

要回答您的問題,您必須執行以下操作:

檢索臨時目錄中的repo數據

mkdir path/to/temporary && cd path/to/temporary
git clone <repo-url> --depth 1 --bare

並在另一個目錄中簽出您想要的目錄

git --work-tree=/path/to/checkout checkout HEAD -- sub/directory

然后,您可以刪除臨時工作並使用結帳。

這當然可以很容易地放在腳本中!

Git哲學離CVS只有幾英里遠,所以我建議你采取不同的行動。 您的Git存儲庫將被分發,每個開發人員或服務器都將擁有它的副本,其中一個在這些中具有權威性( origin Git術語的遠程)。

當你想從一個新的結賬開始構建時,你首先要說Git從origin獲取最新的更改,這稱為獲取。

git fetch origin

然后,要進行新的結帳,您希望您的文件系統與服務器版本完全相同,而不需要任何其他文件。

git checkout --force origin/master
git clean -d --force

這里的優點是網絡操作非常高效,您只從您想要同步的服務器中獲取最新的差異,並且您仍然確定您正在構建正確的文件,而不會更改它們。

您還需要檢查持續集成的工具,例如Jenkins,它與Git存儲庫完全集成。

您可以嘗試使用--depth選項克隆存儲庫,以查看它是否符合您的需要。 --depth選項不會克隆完整的存儲庫歷史記錄,因此會更快。

> git clone http://myrepo.git --depth 1

您可以通過指定分支名稱來進一步限制結帳:

> git clone http://myrepo.git -b master --depth 1

如果您只想簽出一個git存儲庫AFAIK的子目錄,那么它目前是不可能的。

暫無
暫無

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

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