Помощник для извлечения нескольких файлов из данной ревизии
При попытке разрешить конфликты слияния этот помощник очень полезен:
#!/usr/bin/env python3
import argparse
import os
import subprocess
parser = argparse.ArgumentParser()
parser.add_argument('revision')
parser.add_argument('files', nargs='+')
args = parser.parse_args()
toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).rstrip().decode()
for path in args.files:
file_relative = os.path.relpath(os.path.abspath(path), toplevel)
base, ext = os.path.splitext(path)
new_path = base + '.old' + ext
with open(new_path, 'w') as f:
subprocess.call(['git', 'show', '{}:./{}'.format(args.revision, path)], stdout=f)
GitHub upstream .
Использование:
git-show-save other-branch file1.c path/to/file2.cpp
Результат: следующие файлы содержат альтернативные версии файлов:
file1.old.c
path/to/file2.old.cpp
Таким образом, вы сохраняете расширение файла, чтобы ваш редактор не жаловался и мог легко найти старый файл рядом с новым.