以下是如何使用 Git 远程仓库(remotes)备份仓库以及跨设备工作。我们会在本地建一个远程仓库来模拟云平台。
远程仓库其实就是一个 Git 仓库。我们先新建一个仓库:
$ git init --bare ~/remote-git-repo Initialized empty Git repository in 用户目录/remote-git-repo/
选项 --bare
会创建出没有工作树的仓库。
进入到一个 Git 管理的目录里,添加一个名为 backup
远程仓库:
$ git remote add backup ~/remote-git-repo
你可以添加多个远程仓库。除此之外,你还可以:
git remote get-url 远程仓库
:获取远程仓库地址
git remote set-url 远程仓库 新地址
:修改远程仓库地址
git remote remove 远程仓库
:删除远程仓库
git remote rename 远程仓库 新名字
:重命名远程仓库
注意,现在远程仓库的地址是一个本地目录;如果你的远程仓库在某个云平台上的话,这个地址应该根据平台设置。
git push
把现在的提交全部上传到这个远程仓库里:
$ git push backup master Enumerating objects: ?, done. Counting objects: 100% (?/?), done. Delta compression using up to ? threads Compressing objects: 100% (?/?), done. Writing objects: 100% (?/?), ? KiB | ? MiB/s, done. Total ? (delta ?), reused ? (delta ?), pack-reused ? To 用户目录/remote-git-repo * [new branch] master -> master
master
是上传到远程仓库的分支名,你现在可以不管它。
运行:
$ git log commit b1ac9863b2bcdfcf29c8bf87cf24150808a47d1a (HEAD -> master, backup/master) Author: 你的名字 <你的邮箱> Date: ??? ??? ?? ??:??:?? ???? +???? 提交 message
可以看到 backup/master
也就是远程仓库 backup
上的 master
分支已经更新到 HEAD
提交了。
git pull
如果说你有两台设备,在一台上做了提交,并且上传到了远程仓库,要怎么把这些提交下载到另一台上呢?
我们再新建一个仓库,假设它是第二台设备上的:
$ git init ~/device2 Initialized empty Git repository in 用户目录/device2/.git/ $ cd ~/device2 $ git remote add backup ~/remote-git-repo
然后运行:
$ git pull backup master remote: Enumerating objects: ?, done. remote: Counting objects: 100% (?/?), done. remote: Compressing objects: 100% (?/?), done. remote: Total ? (delta ?), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (?/?), ? KiB | ? MiB/s, done. From 用户目录/remote-git-repo * [new branch] master -> backup/master
再运行:
$ git log commit b1ac9863b2bcdfcf29c8bf87cf24150808a47d1a (HEAD -> master, backup/master) Author: 你的名字 <你的邮箱> Date: ??? ??? ?? ??:??:?? ???? +???? 提交 message
现在 backup/master
已经同步到本地了。
git clone
如果你只是想把远程仓库上的东西原封不动地下载下来,你可以直接克隆:
$ git clone https://github.com/ChengYuShun/git-tutorial.git
使用 HTTPS 协议下载。这个仓库里放的是这个教程的源代码。
进入下载好的目录,运行:
$ git remote origin $ git remote get-url origin https://github.com/ChengYuShun/git-tutorial.git
可见 Git 会为克隆下来的仓库默认创建一个远程仓库 origin
,并且其地址就是你克隆的地址。