git基础(5)-远程仓库

远程仓库是指托管在 Internet,或其他网络中的项目的版本库。一个人可以有多个远程仓库,可设置读 、写权限。在与他人协作涉及到管理远程 仓库、推送、拉取数据。

查看远程仓库 git remote

git remote 列出所指定的每一个远程服务器的名称。 git clone克隆的 仓库服务器 默认名称origin
。选项-v 会 显示需要读写 远程仓库所使用的 Git 保存的简写名称和对应 URL。

1
2
3
4
$ git remote -v
GitTest https://github.com/Better-Jiang/GitTest.git (fetch)
GitTest https://github.com/Better-Jiang/GitTest.git (push)

git remote show GitTest,查看某个远程 仓库的更多信息.

  • 列出远程仓库 URL 与跟踪分支信息.
  • 告诉正处于 master 分支
  • 运行 git pull,抓取所有的 远程引用,然后将远程 master 分支合并到本地 master 分支
1
2
3
4
5
6
7
8
9
10
11
12
13
$ git remote show GitTest
* remote GitTest
Fetch URL: https://github.com/Better-Jiang/GitTest.git
Push URL: https://github.com/Better-Jiang/GitTest.git
HEAD branch: master
Remote branches:
branches tracked
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)

添加远程仓库 git remote add <shortaame> <url>

git remorte add <shortname> <url>,添加一个新的远程仓库,同时 指定一个可引用的简写.以后就可以在命令中使用该shortname 来代替整个 URL。例如 git fetch GitTest :拉取远程仓库 GitTest 的数据 git push GitTest master:将本地 master 分支推送到 GitTest 远程仓库

从远程仓库抓取与拉取 git fetch [remote-name]

git fetch [remote-name],此命令访问远程服务器,拉取新 数据到 本地仓库,但不会自动合并或修改当前工作区,需要手动将其合入工作区.
git clone会自动设置本地 master 分支跟踪 所克隆的远程仓库的 master 分支。
git pull通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支

  • 执行git fetch命令后,此时比较本地仓库与远端仓库

    • 更新本地的远端分支 git fetch <shortname>

      1
      2
      3
      4
      5
      6
      7
      8
      $ git fetch
      remote: Enumerating objects: 8, done.
      remote: Counting objects: 100% (8/8), done.
      remote: Compressing objects: 100% (4/4), done.
      remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
      Unpacking objects: 100% (6/6), done.
      From https://github.com/Better-Jiang/GitTest
      d4b6ca5..22ab9e0 master -> GitTest/master
    • 本地与远程的差集 (显示远程有,而本地没有的 commit 提交信息) git log master ..GitTest/master

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      $ git log master ..GitTest/master
      commit 22ab9e044bc87a6e245bba775ae2dffd6616721a (GitTest/master)
      Author: 江 <1433539514@qq.com>
      Date: Wed Feb 20 19:13:18 2019 +0800

      Update c.md

      commit 9451835f337bc5beb3106b7326c8b9522b4208c1
      Author: 江 <1433539514@qq.com>
      Date: Wed Feb 20 19:12:51 2019 +0800

      Create d.md
    • 统计文件改动 git diff <local branch> <remote>/<remote branch>

      1
      2
      3
      4
      5
      $ git diff --stat master GitTest/master
      c.md | 3 +--
      d.md | 1 +
      2 files changed, 2 insertions(+), 2 deletions(-)

推送到远程仓库 git push [remote-name] [branch-name]

git push GitTest master,将本地的 master 分支推送到 GitTest 服务器上

远程仓库 移除 与 重命名

  • 重命名: git remote rename <old-remote-name> <new-remote-name>
  • 移除: git remote rm <old-remote-name>