I don\'t know git very well. :-/
I have two unrelated git-based document repositories that I would like to combine into a single repository. I
While @codeWizard's reply was helpful, that approach didn't retain the timestamps the way I wanted. It did lead me down a rabbit hole that helped me find a solution though...
Create a new, blank repository
git init
Add and fetch the old repositories as remotes
git remote add -f oldRepoA ../oldRepoA
git remote add -f oldRepoB ../oldRepoB
Export the combined commit history by timestamp and hash, pipe the output to sort
, discard the timestamps via cut
, and then pipe the list of chronologically sorted hashes to xargs
, which runs a shell script to export a patch for each individual hash and then immediately apply the patch to the new repo.
git log --all --oneline --format="%at %H" | sort | cut -c12- |
xargs -I {} sh -c
'git format-patch -1 {} --stdout |
git am --committer-date-is-author-date'
The --committer-date-is-author-date
is key to keeping the original timestamps. There might be a better way of doing this, but this works well enough for my use case!