Git 远程仓库(分布式版本控制系统)
前言
- 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。
1、查看远程仓库
如果想查看你已经配置的远程仓库服务器,可以运行
git remote
命令。它会列出你指定的每一个远程服务器的简写。如果你已经克隆了自己的仓库,那么至少应该能看到origin
,这是 Git 给你克隆的仓库服务器的默认名字。$ git remote
origin
你也可以指定选项
-v
,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
如果你的远程仓库不止一个,该命令会将它们全部列出。例如,与几个协作者合作的,拥有多个远程仓库的仓库看起来像下面这样。
$ 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 remote show [remote-name]
命令。# git remote show [remote-name]
$ git remote show origin
如果想以一个特定的缩写名运行这个命令,例如 origin,会得到像下面类似的信息。
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch 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)
- 它同样会列出远程仓库的 URL 与跟踪分支的信息。这些信息非常有用,它告诉你正处于 master 分支,并且如果运行 git pull,就会抓取所有的远程引用,然后将远程 master 分支合并到本地 master 分支。它也会列出拉取到的所有远程引用。
如果你是 Git 的重度使用者,那么还可以通过
git remote show
看到更多的信息。$ git remote show origin
* remote origin
URL: https://github.com/my-org/complex-project
Fetch URL: https://github.com/my-org/complex-project
Push URL: https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-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-branch
master merges with remote master
Local 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 push 会自动地推送到哪一个远程分支。它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行
2、添加远程仓库
运行
git remote add [shortname] [url]
添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写。# git remote add [shortname] [url]
$ 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 访问到 - 你可以将它合并到自己的某个分支中,或者如果你想要查看它的话,可以检出一个指向该点的本地分支。
3、从远程仓库中抓取
从远程仓库中获得数据,可以执行
git fetch [remote-name]
。这个命令会访问远程仓库,从中拉取所有你还没有的数据。# git fetch [remote-name]
$ git fetch origin
- 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
- 必须注意
git fetch
命令会将数据拉取到你的本地仓库,它并不会自动合并或修改你当前的工作,当准备好时你必须手动将其合并入你的工作。 - 如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。所以,
git fetch origin
会抓取克隆(或上一次抓取)后新推送的所有工作。
4、从远程仓库中拉取
如果你有一个分支设置为跟踪一个远程分支,可以使用
git pull
命令来自动的抓取然后合并远程分支到当前分支。$ git pull
- 运行
git pull
通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。 - 默认情况下,
git clone
命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。
- 运行
5、推送到远程仓库
当你想分享你的项目时,必须将其推送到上游。这个命令很简单:
git push [remote-name] [branch-name]
。当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器# git push [remote-name] [branch-name]
$ git push origin master
- 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。
当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
6、远程仓库的重命名
如果想要重命名引用的名字可以运行
git remote rename
去修改一个远程仓库的简写名。# git remote rename [old-shortname] [new-shortname]
$ git remote rename pb paul
例如,想要将 pb 重命名为 paul,可以用 git remote rename 这样做。
$ git remote rename pb paul
$ git remote
origin
paul
- 值得注意的是这同样也会修改你的远程分支名字。那些过去引用 pb/master 的现在会引用 paul/master。
7、远程仓库的移除
如果因为一些原因想要移除一个远程仓库,可以使用
git remote rm
。# git remote rm [shortname]
$ git remote rm paul
$ git remote
origin
Git 远程仓库(分布式版本控制系统)的更多相关文章
- Git 分支(分布式版本控制系统)
前言 几乎所有的版本控制系统都以某种形式支持分支.使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程--常常需要完全创建一个源代码目录的 ...
- Git 基础(分布式版本控制系统)
1.Git 简史 自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标.它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统. 2.Git 基 ...
- Git 安装(分布式版本控制系统)
1.在 Windows 上安装 在 Windows 上安装 Git 也有几种安装方法. 官方版本可以在 Git 官方网站下载,打开下载会自动开始.要注意这是一个名为 Git for Windows 的 ...
- Git 别名(分布式版本控制系统)
1.Git 别名 Git 并不会在你输入部分命令时自动推断出你想要的命令.如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名.这里有一些例子你 ...
- Git 配置(分布式版本控制系统)
1.Mac Git 配置文件 既然已经在系统上安装了 Git,你会想要做几件事来定制你的 Git 环境.每台计算机上只需要配置一次,程序升级时会保留配置信息.你可以在任何时候再次通过运行命令来修改它们 ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- 分布式版本控制系统GIT的使用
一.什么是Git Git是一个分布式版本控制系统,Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异(如CVS.Subver ...
- GIT分布式版本控制系统
Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...
- 史上最浅显易懂的Git分布式版本控制系统教程
从零起步的Git教程,让你无痛苦上手世界上最流行的分布式版本控制系统Git! 既然号称史上最浅显易懂的Git教程,那这个教程有什么让你怦然心动的特点呢? 首先,本教程绝对面向初学者,没有接触过版本控制 ...
- Git是目前世界上最先进的分布式版本控制系统
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
随机推荐
- How to duplicate the records in a MongoDB collection
// Fill out a literal array of collections you want to duplicate the records in. // Iterate over e ...
- 编程实战——电影管理器之XML存储电影信息数据
但凡管理器之类的软件,存储数据是必不可少的.存储数据的话,有几种选择.一是用数据库,把数据存储到数据库里:一是用文本文件,把数据存储到文本文件里:一种是利用XML文件,把数据对象转换为XML后,存储到 ...
- sonarqube 5.6
转载:https://www.jianshu.com/p/402987500bfd 一. 简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量.通过插件形式,可以支持包括java,C ...
- SWIFT学习笔记05
1.Swift 无需写break,所以不会发生这样的贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answe ...
- APP测试体系
网上找的图片,总结的很好:
- [转] libtool的作用及应用
今天使用 autoconf 的时候遇到一个 libtool 的问题,觉得这个东西挺有意思,找了个文档过来,暂时记录. 转自:http://blog.csdn.net/larntin2002/artic ...
- ajax请求,返回值为304 Not Modified 错误原因与解决办法
先说原因吧,这是因为http请求的缓存问题引起的 前后调用了两个相同的请求,服务器懒得给你重新发一个请求,所以就304咯 那怎么办呢? 解决方法也很简单,加一个时间戳就行了 比如: 原请求为: $.g ...
- Response的返回内容类型
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6682514.html 服务器在返回结果给浏览器时,通常需要先设置响应头的contentType属性.那么,c ...
- unique-paths I &II 路径数,动态规划
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- Cocos2d 编译js为jsc bytecode文件
使用: cocos jscompile -s XXX(目录名,会递归) -d (输出的目录) 但编译后的jsc比原来的js更大了 如果只是为了代码的保密性,也许只需要用yuicompres ...