[英]Equivalence of Perforce “p4 sync -p …@Changelist” in Git
在Perforce中,您實際上可以創建一個clientspec(工作區),並在同步Perforce代碼時使用“-p”選項。 這樣它就不會觸及Perforce服務器中的文件表,並使同步更快。 它基本上是從Perforce服務器復制和粘貼文件。
我們正在Git端試驗這樣的操作,但是找不到這個Perforce命令的精確副本。
這有等價嗎?
我知道git reset --hard <commit>
可以工作,但是如果你已經使用了git clone
並獲得了文件的本地副本。 在我們的例子中,假設我們從不在本地機器上運行git clone
。
我在這種情況下問,因為我正在進行SCM發布構建,而Git的源代碼需要在特定的SHA上同步到構建機器,但過去沒有運行git clone
。
謝謝。
您可以配置git-daemon以允許“upload-archive”服務(請參閱git-daemon聯機幫助頁),這允許客戶端使用git archive --remote
簡單地從git存儲庫請求特定快照的git archive --remote
命令,而不是必須下載整個數據庫。
例如,這將從遠程服務器下載1.0.0版本的名為“cmstool”的項目的快照:
git archive --format=tar \
--prefix=cmstool-1.0.0/ \
--remote=git://git/cmstool.git v1.0.0 | tar xf -
git不是為了獲取特定版本的文件,而是為了獲取歷史記錄。 首先進行git clone
並在需要更新時進行git fetch
確實存在問題嗎? 更新使用差異,因此可以比復制所有文件快得多,並且git存儲庫通常不比當前狀態大得多。
也就是說,有一些方法可以不復制所有歷史記錄:
git clone --depth 1
只會獲取最近的歷史記錄,但它仍然會獲取所有分支。 它也不是一個非常有用的克隆,因為許多常見的操作都行不通。 這可能不是您的用例中的問題。 git init; git remote add -t <branch> origin <url>; git fetch origin/branch; git checkout origin/branch
git init; git remote add -t <branch> origin <url>; git fetch origin/branch; git checkout origin/branch
git archive
可以創建一個快照,可以作為單獨的文件下載,然后解壓縮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.