我有以下问题:我已经创建了一个存储库并对其进行了更改,并在git中提交了它们。现在,我意识到存储库的名称是错误的,我已经创建了另一个名称正确的存储库,我想知道是否有一种方法可以使用git将第一个存储库中的所有代码(连同我所做的更改)导入到第二个存储库中,而不是手动复制粘贴它。在第一个存储库中,有一个包含我所有更改的分支。
请注意,我不能直接更改第一个存储库的名称,因为它不属于我,我不能这样做。
任何想法?
我最初的想法是手动复制粘贴所有的类和代码,从一个存储库到另一个存储库,但这绝对是耗时的,因为第一个存储库有很多类和大量的代码,并且可能会发生一些复制粘贴错误。我只是想要一个安全快捷的方法。
- 选项A:在您的新存储库中,您可以将旧存储库添加为远程,然后从它添加
git fetch
。 - 选项B:将新存储库作为远程存储库添加到旧存储库中,然后将分支
git push
。 - 选项C:创建另一个临时存储库,将其作为远程存储库添加到两个存储库中,然后首先将旧存储库中的
git push
添加到临时存储库中,然后将新存储库中的git fetch
添加到临时存储库中。
选项C特别有用,如果两个存储库都在防火墙后面,并且它们没有办法直接相互通信。
短语代码…在存储库中是不精确的:
- 一个Git存储库由提交组成。
- 每次提交保存每个文件的完整快照,以及元数据。
因此,"可以指"某一特定委员会的部分或全部文件","某一特定委员会的某一组的部分或全部文件的所有版本",甚至"某一特定委员会的部分或全部文件"。
如果您想保留实际提交本身,这是一件事(相对容易做到,但有一些限制)。SebDieBln的回答中有相应的选项。
如果您只想要来自某些或所有提交的部分或所有文件,这往往有点困难,除非您只想要来自一个特定提交的部分或所有文件。
要获取"一些但不是所有的提交",使用git checkout
或git switch
从存储库中提取每个提交,将感兴趣的文件复制到其他地方,并使用Git在适当的其他存储库中创建新的提交。
若要"从某些或所有提交中获取所有文件",请考虑将上述操作自动化。
要从一个特定的提交中获取"一些文件",只需签出有问题的提交,以某种方式保存文件,然后移动到需要这些文件的存储库并提取保存的文件(整个过程可能只是cp *.py ../other-repo
的问题)。在目标存储库中做一个新的提交,你就完成了。