Скопируйте исправления.
Как заметил комментатор, история с гитом технически не может быть перенесена из одного репо в другое. Однако, поскольку вы все равно переписываете историю, вы, очевидно, хотите скопировать историю файла в свое новое репо.
У меня есть несколько сценариев, которые делают это, и работают нормально со следующими оговорками:
- файлы не были переименованы.
- Каждое исполнение создает новые коммиты.
Для краткости я только перечисляя мясо сценариев:
# git-cp-history
OTHER_REPO_DIR="$1"
FILES="[email protected]"
git-export-history "$FILES" | git-import-history "$OTHER_REPO_DIR"
# git-export-history
FIRST_COMMIT=`git log --format=%H --reverse -- "${FILES[@]}" | head -n1`
git format-patch --stdout "$FIRST_COMMIT"^..HEAD -- "${FILES[@]}"
# git-import-history
cd "$1"
git am
Поскольку скрипты называются «git- *» и в моей PATH, я использую их, как это:
git cp-history ../other-repo local/repo/file.txt
Если вы перемещаете файл на совершенно другое репо, как может история с ним пойти? –
@TimBiegeleisen История в одном репо может быть скопирована на другое репо в виде серии патчей. Они сохранят даты авторизации. – willkil
Ключ здесь в том, что * файлы * на самом деле не имеют * истории в Git. * Commits * имеют историю, а точнее, * являются историей. И, конечно, у коммитов есть файлы. Так что это совсем наоборот: это не то, что у файлов есть история, это история, в которой есть файлы! В конце концов, когда вы хотите скопировать или добавить некоторую историю из репо A в репо B, это означает, что вы хотите скопировать * commit * из A в B. (Как и с 'git filter-branch', вы можете захотеть изменить коммиты в процессе копирования.) – torek