I have directory A with files matching directory B. Directory A may have other needed files. Directory B is a git repo.
I want to clone directory B to directory A but git-clone won't allow me to since the directory is non-empty.
I was hoping it would just clone .git and since all the files match I could go from there?
I can't clone into an empty directory because I have files in directory A that are not in directory B and I want to keep them.
Copying .git is not an option since I want refs to push/pull with and I don't want to set them up manually.
Is there any way to do this?
Update: I think this works, can anyone see any problems? -->
git clone --no-hardlinks --no-checkout ../b a.tmp
mv a.tmp/.git .
rm -rf a.tmp
git unstage # apparently git thinks all the files are deleted if you don't do this
In the following shell commands
existing-dir is a directory whose contents match the tracked files in the
repo-to-clone git repository.
# Clone just the repository's .git folder (excluding files as they are already in # `existing-dir`) into an empty temporary directory git clone --no-checkout repo-to-clone existing-dir/existing-dir.tmp # might want --no-hardlinks for cloning local repo # Move the .git folder to the directory with the files. # This makes `existing-dir` a git repo. mv existing-dir/existing-dir.tmp/.git existing-dir/ # Delete the temporary directory rmdir existing-dir/existing-dir.tmp cd existing-dir # git thinks all files are deleted, this reverts the state of the repo to HEAD. # WARNING: any local changes to the files will be lost. git reset --hard HEAD