如何通过USB驱动器将我的git代码库从Windows机器复制到Linux机器?

4

我有一个运行在Windows桌面机器上的Git服务器,但是它不知何故失去了连接到互联网的能力。我想将repo移动到Linux机器上。我已经知道如何切换我的克隆repo以指向新的主repo一旦设置好,但我需要先将其转移到新的机器上。

我认为由于Windows和Linux有些不同,我不能直接复制repo目录。但也许我可以?我有哪些选择?

2个回答

21

您可以使用git bundle功能:它会将代码库压缩成一个文件。与整个代码库及其所有文件相比,移动一个文件更加容易。

git bundle create /tmp/myrepo.bundle --all

请参考"如何通过电子邮件发送git仓库?"

在Linux上复制后,您可以从该文件进行克隆。

git clone myrepo.bundle
cd myrepo

我想我应该按照这里的说明,通过从该捆绑包克隆裸仓库来创建服务器:http://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server 对吧? - B T
@BT 是的,如果你想要推送到那个仓库,最好是一个裸仓库。(虽然最近已经有所改变:https://dev59.com/sU7Sa4cB1Zd3GeqP7eW1#28261790) - VonC
1
我已经使用了一段时间的Bundle,它是Git的一个非常好的功能。如果你想深入了解它,可以观看这个视频(需要购买系列)http://shop.oreilly.com/product/0636920024774.do - CodeWizard
1
@jsexpert 复制一个文件在保持仓库完整性方面更加安全。至于 Git,我对它了解得很多,不需要再看一本书 ;) - VonC
1
这个讲座不是为你而准备的,而是为提问者准备的。 - CodeWizard
显示剩余5条评论

7
如之前所建议,您可以创建bundle。但bundle是只读存储库。
这是最简单的方法:只需复制项目的根文件夹(其中必须包括.git)。将其复制到您的USB上,然后再复制到Linux机器上。
唯一需要担心的是CRLF,它是git处理换行符的方式。
在Windows上,它应该有一个true值,而在Linux上,它应该具有如下所示的输入值。
# Linux based OS should be: 
git config --global core.autocrlf input 

# Windows configuration
git config --global core.autocrlf true

enter image description here


3
如果不设置 autocrlf=input,每个文件都会显示为已修改。我认为 find . -name "*" | xargs dos2unix 应该足够了。然后它们仍然显示为已修改,但与 git diff 没有差异。 - Kevin
像这样复制根项目文件夹是不起作用的: windows -> usb驱动器 -> ubuntu。之后我无法在Ubuntu上运行它。git status显示fatal: cannot chdir to 'C:/Users/.../my_project': No such file or directory - sunwarr10r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接