我有目录 A 与目录 B 匹配的文件。目录 A 可能有其他需要的文件。目录 B 是一个 git repo。
我想将目录 B 克隆到目录 A 但 git-clone 不允许我这样做,因为该目录是非空的。
我希望它只会克隆 .git 并且由于所有文件都匹配,我可以从那里去吗?
我无法克隆到空目录,因为我在目录 A 中有文件不在目录 B 中,我想保留它们。
复制 .git 不是一种选择,因为我希望 refs 可以推/拉,我不想手动设置它们。
有没有办法做到这一点?
更新:我认为这可行,任何人都可以看到任何问题吗?-->
cd a 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
在以下 shell 命令existing-dir中是一个目录,其内容与repo-to-clonegit 存储库中的跟踪文件匹配。
existing-dir
repo-to-clone
# 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