如何将Git仓库备份到本地

如何将Git仓库备份到本地

十月 21, 2019

如何将Git仓库备份到本地

常用的传输协议

常用协议 语法格式 说明
本地协议(1) /path/to/repo.git 哑协议
本地协议(2) file:///path/to/repo.git 智能协议
http/https协议 http://git-server.com:port/path/to/repo.git
https://git-server.com:port/path/to/repo.git
平时接触到的都是智能协议
ssh协议 user@git-server.com:path/to/repo.git 工作中最常用的智能协议

哑协议与智能协议

  • 直观区别: 哑协议传输进度不可见;智能协议传输可见。
  • 传输速度: 智能协议比哑协议传输速度快。
$ mkdir git-backup #创建一个备份文件夹
$ cd git-backup #切换到文件夹下
$ git clone --bare /Users/xxx/Documents/WorkSpace/GitTest/LocalTest/.git ya.git #使用哑协议 克隆一个不带工作区的仓库
Cloning into bare repository 'ya.git'...
done.
$ ls
ya.git
$ git clone --bare file:///Users/xxx/Documents/WorkSpace/GitTest/LocalTest/.git zhineng.git #使用智能协议 克隆一个不带工作区的仓库(智能协议传输不仅有打包,还有压缩,所以传输速度快)
Cloning into bare repository 'zhineng.git'...
remote: Enumerating objects: 47, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 47 (delta 11), reused 0 (delta 0)
Receiving objects: 100% (47/47), 4.06 KiB | 4.06 MiB/s, done.
Resolving deltas: 100% (11/11), done.
$ ls
ya.git zhineng.git

在工作环境中,如何把变更快速的同步到其他地方

$ pwd
/Users/xxx/Documents/WorkSpace/GitTest/LocalTest
$ git remote -v #查看发现还没有远端仓库
$ git remote add zhineng file:///Users/jamme/Documents/WorkSpace/GitTest/git-backup/zhineng.git #使用智能协议创建远端仓库 仓库名zhineng
$ git branch -av #查看分支 此时查看上边创建远端分支(zhineng.git) 也只有master和temp分支
master 9522b28 modify content
* temp a82282c Modified readme.md
$ git checkout remote_test #创建新分支
Switched to branch 'remote_test'
$ git branch -av
master 9522b28 modify content
* remote_test a82282c Modified readme.md
temp a82282c Modified readme.md
$ git push zhineng #推送到远端zhineng分支 这里需要设置upstream
fatal: The current branch remote_test has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream zhineng remote_test
$ git push --set-upstream zhineng remote_test #意味着下次push’remote_test‘分支到’zhineng‘分支就不用再设置
Total 0 (delta 0), reused 0 (delta 0)
To file:///Users/jamme/Documents/WorkSpace/GitTest/git-backup/zhineng.git
* [new branch] remote_test -> remote_test
Branch 'remote_test' set up to track remote branch 'remote_test' from 'zhineng'.
  • 切换至远端
$ pwd
/Users/xxx/Documents/WorkSpace/GitTest/git-backup/zhineng.git
$ git branch -av
master 9522b28 modify content
remote_test a82282c Modified readme.md
* temp a82282c Modified readme.md