use*_*ser 5 git version-control backup
我是git的新手.需要一些建议才能知道我的设置是否正确.请阅读以下内容:
我在我的开发计算机上使用git进行2个单独的项目,并希望备份USB驱动器上的所有内容(设置为git bare repo).另外,我想在另一台计算机上同步这些项目(用于部署).
计算机1上的2个项目路径是
/machine1/path/proj1
/machine1/path/proj2
Run Code Online (Sandbox Code Playgroud)
这是我设置的方式(为proj2重复完全相同的步骤)
#Initialize git repo
cd /machine1/path/proj1
git init
git add .
git commit -a -m "proj 1 first commit"
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
题:
cd /machine2/path/proj2
git pull /usb/backup/proj1.git
Run Code Online (Sandbox Code Playgroud)
我希望git显示一条错误消息......类似于"尝试将proj2与proj1 repo同步",而是在proj1中创建了proj2的子目录.我的设置有缺点吗?我预计像这样的动作需要--force
切换或者产生致命的错误
这些步骤基本上是正确的,除了我更喜欢使用 git bundle和 USB 密钥(即我更喜欢在 USB 密钥上每个项目一个文件,而不是许多文件:文件损坏的可能性较小)。您可以使用标签和分支创建一个,然后从这些捆绑包中提取。
关于拉取问题,我建议设置一个遥控器:
got remote add origin /usb/backup/proj1.git
Run Code Online (Sandbox Code Playgroud)
这样,您将“ pull origin
”而不是手动输入地址(您可能会混淆)。
有关更多信息,请参阅Groking git 远程用法。