当复制存储库而没有.git目录时,也会复制Git历史记录

问题描述 投票:0回答:1

我正在尝试将公共git存储库中的所有文件都复制到一个全新的私有git存储库中,我们将其称为repo_A,将其称为repo_A。据我所知,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 questionthat one和其他几个。

我在这里想念什么?如何防止历史记录也被复制?我看到使用--depth 1可能会解决问题,但是我很想从.git目录的角度了解我所缺少的内容。谢谢!

git github git-clone
1个回答
0
投票

在这种情况下,您确实用.git复制了cp -a目录,该目录是递归操作的。 .git目录包含存储库中的所有历史记录和对象,如果将其从一个存储库复制到另一个存储库,则所有历史记录也将被复制。

如果您只想复制跟踪的文件,则可以使用以下内容:

(cd repoA && git archive --format=tar HEAD) | (cd repoB && tar -xvf -)
© www.soinside.com 2019 - 2024. All rights reserved.