Git 基础 - 远程仓库的使用

远程仓库的使用

要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展。 管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支,等等。本节我们将详细讨论远程库的管理和使用。

 

查看当前的远程库

要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库:

$ git clone git://github.com/schacon/ticgit.git
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 | 193.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin

 

也可以加上 -v 选项(译注:此为 --verbose 的简写,取首字母),显示对应的克隆地址:

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

如果有多个远程仓库,此命令将全部列出。比如在我的 Grit 项目中,可以看到:

$ cd grit
$ git remote -v
bakkdoor  git://github.com/bakkdoor/grit.git
cho45     git://github.com/cho45/grit.git
defunkt   git://github.com/defunkt/grit.git
koke      git://github.com/koke/grit.git
origin    git@github.com:mojombo/grit.git

这样一来,我就可以非常轻松地从这些用户的仓库中,拉取他们的提交到本地。请注意,上面列出的地址只有 origin 用的是 SSH URL 链接,所以也只有这个仓库我能推送数据上去(我们会在第四章解释原因)。

添加远程仓库

要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]

$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin  git://github.com/schacon/ticgit.git
pb  git://github.com/paulboone/ticgit.git

现在可以用字符串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb

$ git fetch pb
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit* [new branch]      master     -> pb/master* [new branch]      ticgit     -> pb/ticgit

现在,Paul 的主干分支(master)已经完全可以在本地访问了,对应的名字是 pb/master,你可以将它合并到自己的某个分支,或者切换到这个分支,看看有些什么有趣的更新。

从远程仓库抓取数据

正如之前所看到的,可以用下面的命令从远程仓库抓取数据到本地:

$ git fetch [remote-name]

此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。(我们会在第三章详细讨论关于分支的概念和操作。)

如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。

推送数据到远程仓库

项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:

$ git push origin master

只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。有关推送数据到远程仓库的详细内容见第三章。

查看远程仓库信息

我们可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:

$ git remote show origin
* remote originURL: git://github.com/schacon/ticgit.gitRemote branch merged with 'git pull' while on branch mastermasterTracked remote branchesmasterticgit

除了对应的克隆地址外,它还给出了许多额外的信息。它友善地告诉你如果是在 master 分支,就可以用 git pull 命令抓取数据合并到本地。另外还列出了所有处于跟踪状态中的远端分支。

上面的例子非常简单,而随着使用 Git 的深入,git remote show 给出的信息可能会像这样:

$ git remote show origin
* remote originURL: git@github.com:defunkt/github.gitRemote branch merged with 'git pull' while on branch issuesissuesRemote branch merged with 'git pull' while on branch mastermasterNew remote branches (next fetch will store in remotes/origin)cachingStale tracking branches (use 'git remote prune')libwalkerwalker2Tracked remote branchesaclapiv2dashboard2issuesmasterpostgresLocal branch pushed with 'git push'master:master

它告诉我们,运行 git push 时缺省推送的分支是什么(译注:最后两行)。它还显示了有哪些远端分支还没有同步到本地(译注:第六行的 caching 分支),哪些已同步到本地的远端分支在远端服务器上已被删除(译注:Stale tracking branches 下面的两个分支),以及运行 git pull 时将自动合并哪些分支(译注:前四行中列出的 issues 和 master 分支)。

远程仓库的删除和重命名

在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 pb 改成 paul,可以这么运行:

$ git remote rename pb paul
$ git remote
origin
paul

注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了 paul/master

碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令:

$ git remote rm paul
$ git remote
origin

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山东理工大学第七届ACM校赛-G 飞花的传送门

G - 飞花的传送门飞花壕最近手头比较宽裕,所以想买两个传送门来代步(夏天太热,实在是懒得走路)。平面上有N个传送门,飞花壕想要挑两个距离最远的传送门带回家(距离为欧几里得距离,即两点之间直线…

leetcode 1002. 查找常用字符

给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。 …

git 代理 git_如何成为Git专家

git 代理 gitI made a mistake in my commit, how do I fix it ?我在提交中犯了一个错误,该如何解决? My commit history is a mess, how do I make it neater?我的提交历史是一团糟,我如何使其更整洁? If you have ever had …

101与金根回顾敏捷个人:(13)敏捷个人和敏捷开发

本文更新版本已挪至 http://www.zhoujingen.cn/blog/1726.html ------------------------- 敏捷个人源于工作 自2001初成立了敏捷联盟到现在10年的推广,敏捷开发已日渐成为当前IT行业软件开发的一种主流方法。没有银弹,任何方法都不可能解决所有问题&a…

计算机网络选择重传,计算机网络选择重传协议实验报告..docx

计算机网络选择重传协议实验报告.《计算机网络》选择重传协议实验报告1.实验内容和实验环境描述实验内容:利用所学数据链路层原理,设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps 全…

leetcode 剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入&…

【Maven学习】Maven打包生成包含所有依赖的jar包

http://blog.csdn.net/u013177446/article/details/54134583 ************************************************** maven打包生成的普通jar包,只包含该工程下源码编译结果,不包含依赖内容。同时,maven提供以下方式生成包含所有依赖的jar文件…

mysql 数据库 安全_如何确保您MySQL数据库安全

mysql 数据库 安全我们开始之前的一些基本信息: (Some basic information before we get started:) Source: Center for Internet Security’s (CIS) Oracle MySQL Community Server 5.7来源: 互联网安全中心(CIS)Oracle MySQL Community Server 5.7 Op…

Exchange server 2010系列教程之三 发送邮件测试

最近有些忙,好几天没有上来写教程了,接着往下写吧。就当是自己的学习笔记,呵呵,有不到之处,还请大家多多指教。 上一篇我们已经把服务器架设好了,那么我们来测试一下发送邮件。 1.首先在AD DC上面新建一个域…

如何用计算机扫描图片变成文字,怎么扫描图片上的文字-华为手机黑科技"文字扫描仪",3秒就能将纸质文档转成电子档,牛...

现如今,手机已经成为我们使用率最高的电子设备之一了。手机虽小,但是功能可是五花八门,很多手机的功能,可能我们使用几年,都没有发现过。今天就给大家介绍华为手机中,非常强大的一项黑科技“文字扫描仪”。…

第一步:编辑器选择

对于c/c的学习已经进一年的时间了,现在想开始好好换一个文本编辑器,然后慢慢的学习,随着时间的增加而不断增加。两款颇有争议的软件是Vim和emacs,两者之间的选择其实对于初学者的我还是比较困难的,Vim在原来有点接触过…

leetcode116. 填充每个节点的下一个右侧节点指针(dfs)

代码 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _left;right _ri…

react销毁方法钩子0_React钩子:使用React状态的新方法

react销毁方法钩子0Updated: With React 16.8, React Hooks are available in a stable release!更新:随着React 16.8的发布, React Hooks已经发布! Outdated: Hooks are still an experimental proposal. They’re currently in React v16.…

Linux下安全审计工具 lynis 使用说明

官网:https://cisofy.com/download/lynis/ 下载解压后,执行./lynis -Q即可,稍等片刻自动生成一份检测报告。可以根据检测报告看哪里不足进行改进即可。 本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/…

课堂训练

1.对于可能的变更是否能制定应急计划? 可以制定 例如一款app的开发,在制作app之前会对app的功能性进行一个规划,想的比较全面就能很好应对变更。 2.员工是否能够有效地处理意料之外的工作请求? 能够处理 对于工作能力极强的员工而…

Google 实用搜索技巧

孔子曰:“工欲善其事,必先利其器。居是邦也,是其大夫之贤者,友其示支仁者。”——语出《论语卫灵公》 1. Google搜索固定格式的文档 Google支持特定格式文档的搜索(“filetype:”就是它的搜索语法)&#xf…

华科的计算机和建筑学哪个强,华中科技大学和华南理工大学相比,谁更占优势?看了也许就知道了...

大学是学生接受教育的过程中非常重要的一个阶段,很多学生都会尽可能在高考中,考出更好的成绩,争取报考一个更好的大学。为了提升教育水平,我国到目前为止建设了超过3000所大学,其中有很多高等院校非常相似,…

c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题

我公司最近升级程序经常报出更新失败问题,究其原因,原来是更新时,他们可能又打开了正在被更新的文件,导致更新文件时,文件被其它进程占用,无法正常更新而报错,为了解决这个问题,我花…

播客#50:Sacha Greif

On todays episode of the freeCodeCamp Podcast, Quincy Larson interviews Sacha Greif, a designer, developer, and prolific open source project creator.在今天的免费CodeCamp播客中,昆西拉尔森(Quincy Larson)采访了设计师,开发人员和多产的开源…

leetcode 977. 有序数组的平方(双指针)

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2: 输入:[-7,-3,2,3,11] 输出&am…