How to copy a file or directory from another GIT repository while preserving its history?

Internet is full of magic formulas each one more complex.

Here I’m proposing a much simpler and faster one that is to make a git format-patch for the entire history of the file or subdirectory that we want and then import it into the destination repository.

mkdir /tmp/mergepatchs
cd ~/repo/org
export reposrc=myfile.c #or mydir
git format-patch -o /tmp/mergepatchs $(git log $reposrc|grep ^commit|tail -1|awk '{print $2}')^..HEAD $reposrc
cd ~/repo/dest
git am /tmp/mergepatchs/*.patch

Simple and fast :)

Source synaptic fault http://blog.neutrino.es/2012/git-copy-a-file-or-directory-from-another-repository-preserving-history/

Never* use git pull – YouTube

    Just a quick summary mostly for myself:

    How to use git pull --rebase to keep your team’s commit history clean.

    Command for creating the ‘git pr‘ alias (so you can copy-paste): git config --global alias.pr "pull --rebase"

    1. Always try git pull --rebase first. It if works, you’re done!
    2. If you get a merge conflix, you can undo everything with git rebase --abort
    3. Then just pull “normally” using git pull, or do an interactive rebase (advanced)