簡體   English   中英

如何安全地從git存儲庫中簽出臨時工作樹?

[英]How to safely checkout a temporary working tree from a git repository?

回答 另一個問題時,我提出了一個解決方案,該解決方案需要簽出一個臨時工作樹,但必須安全地執行它,而不能以任何方式破壞源存儲庫。 特別是,該操作必須安全才能與其他git操作同時運行。 我認為可以做到這一點,並且沒有在答案中詳細說明,然后不得不提供注釋以說明如何做到這一點。 這個自我回答的問題填補了空白。

下面的腳本將工作樹檢出到當前目錄中,而不會以任何方式影響源存儲庫(特別是可以在沒有寫訪問權的存儲庫上執行它,例如,屬於另一個用戶的存儲庫)。

用法:

git-checkout-tmp-worktree repo_path [revision]

例子:

git-checkout-tmp-worktree ~/myrepo1
git-checkout-tmp-worktree ~/myrepo1 HEAD^^

git-checkout-tmp-worktree

#!/usr/bin/env bash

if [[ $# -eq 0 || $# -gt 2 ]]
then
    echo >&2 "Usage: $(basename "$0") repo_path [revision]"
    exit 1
fi

repo="${1}"
revision="${2:-HEAD}"

tmpdir="$(mktemp -d)"
trap "rm -rf '$tmpdir'" EXIT
GIT_INDEX_FILE="$tmpdir/index" git --git-dir="$repo"/.git checkout "$revision" .

暫無
暫無

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

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