Files
brchess/scripts/git-split.sh
2024-06-17 10:32:44 +02:00

26 lines
662 B
Bash
Executable File

#!/usr/bin/env bash
#
# Copy a git file, keeping history.
# Source: https://stackoverflow.com/a/53849613/3079831
if (( $# != 2 )) ; then
echo "Usage: git-split.sh original copy"
exit 1
fi
from="$1"
to="$2"
git mv "$from" "$to"
git commit -n -m "Split history $from to $to - rename file to target-name"
REV=$(git rev-parse HEAD)
git reset --hard HEAD^
git mv "$from" temp
git commit -n -m "Split history $from to $to - rename source-file to temp"
git merge "$REV"
git commit -a -n -m "Split history $from to $to - resolve conflict and keep both files"
git mv temp "$from"
git commit -n -m "Split history $from to $to - restore name of source-file"
exit 0