Экспортировать файл из другой ветки git

Есть ли простой способ экспортировать один файл из другого ветки git (локального или удаленного) без проверки этой ветки?

Ответы

Ответ 1

Вы можете сделать следующее:

 git show experiment:docs/README.txt > /tmp/exported-README.txt

... для локальной ветки experiment. Для ветки, которую в репозитории вы ссылаетесь на удаленный origin, вы можете сделать следующее, аналогично:

 git fetch origin
 git show origin/other-experiment:docs/README.txt > /tmp/exported-README-remote.txt

Ответ 2

Да

git show remote/branchname:path/to/file

Если вы хотите сохранить его напрямую, это может пригодиться:

git_showfile () 
{ 
    if [ $# -lt 1 ]; then
        return 255;
    fi;
    local fspec="$1";
    shift;
    local fname="$(basename "$fspec")";
    local fpath="$(dirname "$fspec")";
    local revision=HEAD;
    if [ $# -ge 1 ]; then
        revision="$1";
    fi;
    if [ -e "$fspec" ]; then
        echo not overwriting existing file;
    else
        mkdir -pv "$fpath" && git show "$revision:$fspec" > "$fspec";
    fi
}

Изменить:..., который вы использовали бы следующим образом

git_showfile path/to/file 

или

git_showfile path/to/file 237f723edcb89

и др.

Ответ 3

Вы можете выбрать конкретный файл из справки:

git checkout branch_or_hash path/to/file

Текущая ветка останется неизменной, но другой файл также будет присутствовать. Он также будет добавлен в индекс.