文章目录

  • 2.5 Git 基础 - 远程仓库的使用
  • 查看远程仓库
  • 添加远程仓库
  • 从远程仓库中抓取与拉取
  • 推送到远程仓库
  • 查看远程仓库
  • 远程仓库的移除与重命名
  • 参考资料
  • 目录

2.5 Git 基础 - 远程仓库的使用

为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。

远程仓库是指托管在因特网或其他网络中的你的项目的版本库。你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。

在本节中,我们将介绍一部分远程管理的技能。

查看远程仓库

如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin - 这是 Git 给你克隆的仓库服务器的默认名字:

$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin

你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。

$ git remote -v
origin  https://github.com/schacon/ticgit (fetch)
origin  https://github.com/schacon/ticgit (push)

如果你的远程仓库不止一个,该命令会将它们全部列出。

例如,与几个协作者合作的,拥有多个远程仓库的仓库看起来像下面这样:

$ cd grit
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
koke      git://github.com/koke/grit.git (fetch)
koke      git://github.com/koke/grit.git (push)
origin    git@github.com:mojombo/grit.git (fetch)
origin    git@github.com:mojombo/grit.git (push)

这样我们可以轻松拉取其中任何一个用户的贡献。外,我们大概还会有某些远程仓库的推送权限,虽然我们目前还不会在此介绍。

注意这些远程仓库使用了不同的协议;我们将会在 在服务器上搭建 Git 中了解关于它们的更多信息。

添加远程仓库

我在之前的章节中已经提到并展示了如何添加远程仓库的示例,不过这里将告诉你如何明确地做到这一点。

运行 git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin  https://github.com/schacon/ticgit (fetch)
origin  https://github.com/schacon/ticgit (push)
pb  https://github.com/paulboone/ticgit (fetch)
pb  https://github.com/paulboone/ticgit (push)

现在你可以在命令行中使用字符串 pb 来代替整个 URL。

例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb:

$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit* [new branch]      master     -> pb/master* [new branch]      ticgit     -> pb/ticgit

现在 Paul 的 master 分支可以在本地通过 pb/master 访问到 - 你可以将它合并到自己的某个分支中,或者如果你想要查看它的话,可以检出一个指向该点的本地分支。 (我们将会在 Git 分支 中详细介绍什么是分支以及如何使用分支。)

从远程仓库中抓取与拉取

就如刚才所见,从远程仓库中获得数据,可以执行:

$ git fetch [remote-name]

这个命令会访问远程仓库,从中拉取所有你还没有的数据。执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支(阅读下一节与 Git 分支 了解更多信息),可以使用 git pull 命令来自动的抓取然后合并远程分支到当前分支。 这对你来说可能是一个更简单或更舒服的工作流程;默认情况下,git clone 命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

推送到远程仓库

当你想分享你的项目时,必须将其推送到上游。

这个命令很简单:git push [remote-name] [branch-name]

当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:

$ git push origin master

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。

当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。

你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。 阅读 Git 分支 了解如何推送到远程仓库服务器的详细信息。

查看远程仓库

如果想要查看某一个远程仓库的更多信息,可以使用 git remote show [remote-name] 命令。

如果想以一个特定的缩写名运行这个命令,例如 origin,会得到像下面类似的信息:

$ git remote show origin
* remote originFetch URL: https://github.com/schacon/ticgitPush  URL: https://github.com/schacon/ticgitHEAD branch: masterRemote branches:master                               trackeddev-branch                           trackedLocal branch configured for 'git pull':master merges with remote masterLocal ref configured for 'git push':master pushes to master (up to date)

它同样会列出远程仓库的 URL 与跟踪分支的信息。

这些信息非常有用,它告诉你正处于 master 分支,并且如果运行 git pull,就会抓取所有的远程引用,然后将远程 master 分支合并到本地 master 分支。 它也会列出拉取到的所有远程引用。

这是一个经常遇到的简单例子。 如果你是 Git 的重度使用者,那么还可以通过 git remote show 看到更多的信息。

$ git remote show origin
* remote originURL: https://github.com/my-org/complex-projectFetch URL: https://github.com/my-org/complex-projectPush  URL: https://github.com/my-org/complex-projectHEAD branch: masterRemote branches:master                           trackeddev-branch                       trackedmarkdown-strip                   trackedissue-43                         new (next fetch will store in remotes/origin)issue-45                         new (next fetch will store in remotes/origin)refs/remotes/origin/issue-11     stale (use 'git remote prune' to remove)Local branches configured for 'git pull':dev-branch merges with remote dev-branchmaster     merges with remote masterLocal refs configured for 'git push':dev-branch                     pushes to dev-branch                     (up to date)markdown-strip                 pushes to markdown-strip                 (up to date)master                         pushes to master                         (up to date)

这个命令列出了当你在特定的分支上执行 git push 会自动地推送到哪一个远程分支。

它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行 git pull 时哪些分支会自动合并。

远程仓库的移除与重命名

如果想要重命名引用的名字可以运行 git remote rename 去修改一个远程仓库的简写名。

例如,想要将 pb 重命名为 paul,可以用 git remote rename 这样做:

$ git remote rename pb paul
$ git remote
origin
paul

值得注意的是这同样也会修改你的远程分支名字。

那些过去引用 pb/master 的现在会引用 paul/master。

如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了 - 可以使用 git remote rm :

$ git remote rm paul
$ git remote
origin

参考资料

git 官方 pro git

目录

00-目录

Git 基础之远程仓库-2.5相关推荐

  1. git添加/删除远程仓库

    注意:仓库只有管理员建的你才有权限上传,不然自己建的也没用,没权限上传 1.远程仓库路径查询 git remote -v 2.添加远程仓库 git remote add origin <你的项目 ...

  2. git 无法 push 远程仓库 【Note about fast-forwards】

    git 无法push远程仓库 Note about fast-forwards 提出问题 基本介绍 解决方案 提出问题 git push 远程仓库时,经常报出如下错误,导致无法将本地仓库中的内容提交到 ...

  3. git 本地与远程仓库出现代码冲突解决方法

    git 本地与远程仓库出现代码冲突解决方法 参考文章: (1)git 本地与远程仓库出现代码冲突解决方法 (2)https://www.cnblogs.com/heaven-xi/p/9703566. ...

  4. 使用git拉取远程仓库代码

    git拉取远程仓库代码 引言: 项目需要在阿里云里面拉取代码,本来以为自己会,结果好几歩都出错了,这里记录一下步骤 下载安装好git,打开Git Bash Here,进行初始化三步. 1.git in ...

  5. Git 本地与远程仓库同步操作

    git fetch 做了些什么 git fetch 完成了仅有的但是很重要的两步: 从远程仓库 下载 本地仓库中缺失的 提交记录 更新远程分支指针(假设为 o/master) git fetch 实际 ...

  6. Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交

    Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交 [一]撤销push 执行 git log 查看日志,获取需要回退的版本号 执行 git reset –-soft <版 ...

  7. git 拉取远程仓库分支代码

    git 拉取远程仓库分支代码 本地新建文件夹作为工作区(存放代码的文件夹) 进入该文件,右键选择 git bush here,打开命令窗后,输入初始化命令:git init 命令行:git remot ...

  8. 使用git同步到远程仓库

    使用git同步到远程仓库 在仓库所在的目录(D:\temp\git\repository)点击右键选择"Git Bash Here",启动git bash程序. 然后在git ba ...

  9. git连接github远程仓库

    一:设置用户名和邮箱 打开Git Bash Here 输入: git config --global user.name '用户名' git config --global user.email '邮 ...

  10. git基础:本地仓库创建和远程连接

    1.创建本地git仓库并连接远程仓库 1.1设置git基本配置 git config --global user.name 用户名 git config --global user.email 用户邮 ...

最新文章

  1. 漫话:全球 IPv4 地址正式耗尽?是时候说说到底什么是IPv4和IPv6了!
  2. 网站建设不曾止步,持续优化才有未来!
  3. windows系统命令行下常用命令收集
  4. C语言指针与函数传参
  5. HLS Pragma(3)config_storage
  6. EA与Rose UML建模工具比较
  7. 机器视觉系统需要考虑的十个问题
  8. zabbix企业应用之low level discovery监控mysql
  9. php设置文件权限问题,php如何设置文件权限
  10. 运维测试工作笔记0004---各种免费开源的测试平台
  11. Java使用RSA加密解密及签名校验
  12. 这儿有一个使你网页性能提升10倍的工具
  13. calendar类_不要再自己写 Java 工具类了,这些开源的不香吗?
  14. sparksql优化_Spark SQL | 目前Spark社区最活跃的组件之一
  15. Win socket编程--IOCP完成端口模型
  16. 计算广告——搜索广告技术初窥
  17. SitePoint播客#76:邪恶的WordPress主题
  18. ubuntu安装vmware12出现cannot ope dev/vmmon及modprobe vmmon提示密钥无效的解决办法
  19. 论文笔记--InterFusion
  20. 江湖有故人!欢迎来到程序员的江湖

热门文章

  1. Windows卓越性能概念以及如何打开
  2. 多功能多接口带头像挂件制作微信小程序源码
  3. 三角函数及其之间的关系
  4. wps的ppt如何去掉插入表格的表头与表体之间的空白间隔
  5. CSAPP Lab5--Writing a Dynamic Storage Allocator
  6. MapReduce项目案例3——温度统计
  7. 星上SAR实时处理调研2-典型应用
  8. seo与sem的区别在哪里
  9. 互联网寒冬,这个技术领域的人才需求却持续爆表
  10. phpstudy本地快速搭建网站,并外网访问【无公网IP】