我正在尝试将公共git存储库中的所有文件复制,称为repo_A,复制到全新的私有git存储库中,称为repo_B。
据我所知,git init --template
将无法满足这一需求。
我目前正在运行以下终端命令集:
git clone repo_A_clone_link
git clone repo_B_clone_link
cp -a ./repo_B/.git/. ./repo_A/.git/
cp -a ./repo_A/. ./repo_B/
cd ./repo_B
git push
推送成功,并且在repo_B的master分支中看到了来自repo_A的所有文件。
问题是由于某种原因,我仍然在repo_B中看到repo_A的提交历史记录。
我试图阅读有关主题并进行调查,但是根据this question,似乎repo_B的.git
目录没有改变这一事实应该意味着它的历史也不会改变。
还经历了this question,that one和其他几个人。
我在这里想念什么?如何防止历史记录被复制?
我看到使用--depth 1
可以解决问题,但是我很想从.git
目录的角度了解我所缺少的内容。
谢谢!
答案 0 :(得分:0)
在这种情况下,您确实用.git
复制了cp -a
目录,该目录是递归操作的。 .git
目录包含存储库中的所有历史记录和对象,如果将其从一个存储库复制到另一存储库,则所有历史记录也会被复制。
如果您只想复制跟踪的文件,则可以使用以下内容:
(cd repoA && git archive --format=tar HEAD) | (cd repoB && tar -xvf -)