两台电脑之间的Git备份和同步设置

5

我是git的新手,需要一些建议来确定我的设置是否正确。请阅读以下内容:

我正在开发计算机上针对2个不同项目使用git,并希望将所有内容备份到一个USB驱动器上(设置为git bare repo)。此外,我想在另一台计算机上同步这些项目(用于部署)。

计算机1上的2个项目路径为

/machine1/path/proj1
/machine1/path/proj2 

这是我设置的步骤(为proj2重复完全相同的步骤)。
#Initialize git repo
cd /machine1/path/proj1
git init
git add .
git commit -a -m "proj 1 first commit"

#Backup on USB
cd /usb/backup
mkdir proj1.git
cd proj1.git
git init --bare
cd /machine1/path/proj1
git push --mirror /usb/backup/proj1.git

#Clone to other computer
cd /machine2/path
git clone /usb/backup/proj1.git

#After making changes on machine1, I update machine2 using this command
git pull /usb/backup/proj1.git

问题:

  1. 这些步骤对于 (i) 设置,(ii) 备份到 USB,(iii) 同步到其他设备是正确的吗?还是有更好的方法?
  2. 我错误地执行了这些命令。

cd /machine2/path/proj2
git pull /usb/backup/proj1.git  

我原本希望git显示一个错误信息,类似于“试图将proj2与proj1仓库同步”,但实际上它在proj1内创建了proj2的子目录。这是我的设置有缺陷吗?我原本以为这样的操作需要使用--force开关或者会产生致命错误。

2个回答

4

这些步骤基本上是正确的,除了我更喜欢使用git bundle和USB键(即我更喜欢在一个USB键上为每个项目准备一个文件,而不是许多文件:减少文件损坏的机会)。您可以使用标签和分支创建一个捆绑包,然后从这些捆绑包中拉取。

关于拉取问题,我建议设置远程:

got remote add origin /usb/backup/proj1.git

那样的话,您将会使用"pull origin"代替手动输入地址(可能混淆)。
更多信息请参见理解git远程用法

谢谢。我会查看git bundle和git remote使用的优势。我不理解“更少的文件损坏机会”这部分。难道非bundle方法不是更容错吗?因为如果在特定的实例中,文件没有正确写入USB,那么只有在该事务中正在更新的文件会受到影响。而对于bundle,如果发生损坏,你会失去一切。 - user
@buffer:我只是在暗示备份驱动器上要写入的文件数量。使用捆绑包:只有一个,使用裸仓库:很多。 - VonC

1
你也可以使用 post-receive hook 方法,只需为您的 USB 设置一个远程,以及为您的生产服务器设置一个远程。post-receive hook 强制检出到您告诉它的任何位置,因此当您需要时,只需键入“git push usb”,它应该检出-f 到您的 USB 磁盘或生产服务器。
看看这个... http://toroid.org/ams/git-website-howto

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