0
在my answer到another question我提出了一個解決方案,它需要檢出一個臨時工作樹,但它必須安全地執行,而不以任何方式破壞源存儲庫。特別是,該操作必須安全地與其他git操作同時運行。我相信這是可以做到的,並沒有在答案中詳細說明,然後必須提供一個評論,說明如何做到這一點。這個自我回答的問題填補了這個空白。如何從git存儲庫安全地簽出臨時工作樹?
在my answer到another question我提出了一個解決方案,它需要檢出一個臨時工作樹,但它必須安全地執行,而不以任何方式破壞源存儲庫。特別是,該操作必須安全地與其他git操作同時運行。我相信這是可以做到的,並沒有在答案中詳細說明,然後必須提供一個評論,說明如何做到這一點。這個自我回答的問題填補了這個空白。如何從git存儲庫安全地簽出臨時工作樹?
下面的腳本將工作樹檢出到當前目錄中,而不會以任何方式影響源存儲庫(特別是它可以在沒有寫入權限的存儲庫上執行,例如屬於另一個用戶的存儲庫)。
用法:
git-checkout-tmp-worktree repo_path [revision]
實例:
git-checkout-tmp-worktree ~/myrepo1
git-checkout-tmp-worktree ~/myrepo1 HEAD^^
GIT中結帳-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" .