bitbucket中有一个存储库,我需要从该存储库将内容/代码复制到另一个我需要启动项目的(新)存储库。我referred并创建了一个镜像仓库,其中包含所有分支以及旧仓库的历史记录。不幸的是,我没有想到这一点,因为我只想迁移代码。
我想确定
我会尽力推动新的镜像存储库,因为它们是镜像存储库,因此不会影响旧的存储库。
有什么方法可以删除同样从旧存储库中迁移过来的分支和历史记录提交。
除了被认为是将代码从一个存储库迁移到另一个存储库的最佳方法是什么?
答案 0 :(得分:1)
“复制存储库” 表示复制历史记录和分支。这就是任何克隆操作(镜像或其他方式)的工作方式,除非您提供特定的选项来限制要复制的历史记录的哪一部分(例如浅克隆或单分支克隆)。
要回答您的编号问题:
1)推送到克隆不会自动影响从其克隆的远程(或任何其他远程)。要将内容添加到远程,必须显式推送到它。 --mirror
克隆与任何其他克隆相同。 --mirror
克隆的唯一不同之处在于默认引用映射:源分支映射到本地分支,而不是将源分支映射到远程跟踪引用。并且refs/
层次结构下的所有其他ref也都按“原样”映射。 (如果您确实选择从源存储库中推送或获取,则默认的refspec与常规克隆相对应。)
2)如果仅需要代码的当前版本,一个选择是:克隆后,您可以签出所需的版本,然后将内容复制到另一个文件夹(然后可以在其中init
新的存储库),或rm -rf .git
删除旧的存储库元数据(然后您可以在此处init
新建存储库)。但是,如果事实证明这是一个错误的决定,我不会感到惊讶。一旦您丢掉了信息,就算出于某种原因它很有用,也很难将它找回来。
另一个选择是创建单分支浅克隆。这样可以保留您复制的提交的身份,以防万一您需要恢复存储库和源存储库之间的上下文关系。
git clone --single-branch --depth=1 --mirror <url>
如果您随后要删除到源存储库的链接
git remote remove origin
(您可能会收到关于refs/remotes
层次结构外部的引用未被删除的警告;没关系。)那么即使从您的新存储库中执行push
也不会影响源存储库。 / p>
3)对于push
,--mirror
选项意味着将refs/
下的每个引用推送到遥控器上的相应引用。
最后,
除了被认为是将代码从一个存储库迁移到另一个存储库的最佳方法是什么?
对此没有统一的答案。这仅取决于您从另一个存储库中需要什么信息。上面概述的任何选项都可以,只要它满足您的需求即可。