如何从git存储库安全地签出临时工作树?

时间:2017-02-19 00:00:02

标签: git

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.all.htmlmy answer我提出了一个需要签出临时工作树的解决方案,但它必须安全地执行,而不会以任何方式破坏源存储库。特别是,该操作必须安全地与其他git操作同时运行。我相信它可以完成,并没有在答案中详细说明,然后必须提供一个评论,说明如何做到这一点。这个自我回答的问题填补了这个空白。

1 个答案:

答案 0 :(得分:1)

下面的脚本会检查当前目录中的工作树,而不会以任何方式影响源存储库(特别是它可以在没有写访问权限的存储库上执行,例如属于另一个用户的存储库)。 / p>

用法:

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

示例:

#!/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" .

<强> git的结帐-TMP-worktree

ItemsSource