`

git 远程管理

 
阅读更多
Pro Git

professional version control
Home  
Book  
Blog  
About  
Support Us  
GitHub  
Twitter
This is an in-progress translation.
To help translate the book, please fork the book at GitHub and push your contributions.
远程仓库的使用
要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓库,以便推送或拉取数据,分享各自的工作进展。管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支,等等。本节我们将详细讨论远程库的管理和使用。

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

$ git clone git://github.com/schacon/ticgit.gitInitialized empty Git repository in /private/tmp/ticgit/.git/remote: Counting objects: 595, done.remote: Compressing objects: 100% (269/269), done.remote: Total 595 (delta 255), reused 589 (delta 253)Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.Resolving deltas: 100% (255/255), done.$ cd ticgit$ git remote origin
也可以加上 -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址:

$ git remote -vorigin git://github.com/schacon/ticgit.git
如果有多个远程仓库,此命令将全部列出。比如在我的 Grit 项目中,可以看到:

$ cd grit$ git remote -vbakkdoor  git://github.com/bakkdoor/grit.gitcho45     git://github.com/cho45/grit.gitdefunkt   git://github.com/defunkt/grit.gitkoke      git://github.com/koke/grit.gitorigin    git@github.com:mojombo/grit.git
这样一来,我就可以非常轻松地从这些用户的仓库中,拉取他们的提交到本地。请注意,上面列出的地址只有 origin 用的是 SSH URL 链接,所以也只有这个仓库我能推送数据上去(我们会在第四章解释原因)。

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

$ git remoteorigin$ git remote add pb git://github.com/paulboone/ticgit.git$ git remote -vorigin git://github.com/schacon/ticgit.gitpb git://github.com/paulboone/ticgit.git
现在可以用字串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:

$ git fetch pbremote: 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 remote add [仓库名] [仓库url],git fetch [远程仓库名],即可抓取到远程仓库数据到本地,再用git merge remotes/[仓库名]/master就可以将远程仓库merge到本地当前branch。这种分支方式比较适合独立-整合开发,即各自开发测试好后再整合在一起。比如,Android的Framework和AP开发。

可以使用--bare 选项运行git init 来设定一个空仓库,这会初始化一个不包含工作目录的仓库。

$ cd /opt/git

$ mkdir project.git

$ cd project.git

$ git --bare init

这时,Join,Josie 或者Jessica 就可以把它加为远程仓库,推送一个分支,从而把第一个版本的工程上传到仓库里了。)

如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 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 origin  URL: git://github.com/schacon/ticgit.git  Remote branch merged with 'git pull' while on branch master    master  Tracked remote branches    master    ticgit
除了对应的克隆地址外,它还给出了许多额外的信息。它友善地告诉你如果是在 master 分支,就可以用git pull 命令抓取数据合并到本地。另外还列出了所有处于跟踪状态中的远端分支。

实际使用过程中,git remote show 给出的信息可能会像这样:

$ git remote show origin* remote origin  URL: git@github.com:defunkt/github.git  Remote branch merged with 'git pull' while on branch issues    issues  Remote branch merged with 'git pull' while on branch master    master  New remote branches (next fetch will store in remotes/origin)    caching  Stale tracking branches (use 'git remote prune')    libwalker    walker2  Tracked remote branches    acl    apiv2    dashboard2    issues    master    postgres  Local 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 remoteoriginpaul
注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 pb/master 分支现在成了paul/master。

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

$ git remote rm paul$ git remoteorigin
分享到:
评论

相关推荐

    使用gogs创建Git远程仓库

    而Gogs(Go Git Service)则是一个轻量级、易于搭建的自助Git服务,它可以帮助我们快速地创建和管理Git远程仓库。本文将详细介绍如何使用Gogs来创建Git远程仓库。 首先,我们需要下载并安装Gogs。Gogs支持多种操作...

    Git远程仓库的使用

    参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某个项目时,需要管理这些远程仓库,以便推...

    利用Git远程分支合并开发python项目

    本文档旨在为已经了解 Git 基本操作的开发者提供使用 Git 远程分支管理 Python 项目的方法。远程分支是 Git 中的一种重要概念,通过它,可以实现多人合作开发项目。下面将详细介绍 Git 远程分支的概念、类型、命令和...

    git项目管理工具

    Git是世界上最流行的分布式版本控制系统,尤其在软件开发领域,它被广泛用于项目管理。Git的强大之处在于它能够跟踪代码的变化,让多人协作变得简单而高效。在这个“git项目管理工具”主题中,我们将深入探讨Git的...

    git自动更新远程仓库工具

    Git是世界上最流行的分布式版本控制系统,它允许开发者跟踪和管理代码变更。在开发团队协作中,保持本地仓库与远程仓库同步是非常关键的。"git自动更新远程仓库工具"就是为了解决这个问题而设计的,它可以帮助开发者...

    git版本管理使用规范-团队开发规范文档

    《Git版本管理使用规范——团队开发规范文档》 在软件开发过程中,版本控制系统的使用是至关重要的,Git作为最流行的分布式版本控制系统,被广泛应用在团队协作中。本规范旨在为团队提供一套有效的Git使用规则,...

    gitblit及使用教程

    Gitblit是一款开源的、专为Git版本控制系统设计的轻量级Web界面管理工具,它提供了全面的Git仓库浏览、管理、克隆、推送和拉取功能。在本教程中,我们将深入探讨Gitblit的安装配置以及日常使用,帮助你更好地理解和...

    git(git+管理工具+密钥)

    Git是世界上最流行的分布式版本控制系统,它为软件开发人员提供了一种高效、可靠的方式来跟踪和管理代码变更。在本文中,我们将深入探讨Git的核心概念、常用的管理工具以及与之相关的密钥管理。 首先,让我们理解...

    5.git远程chao

    Git远程操作是Git版本控制系统中的一个重要组成部分,它允许开发者在本地与远程仓库之间同步代码,进行协作和备份。Git的强大之处在于它的分布式特性,每个开发者的电脑上都有一个完整的项目副本,可以离线工作,...

    Git版本管理工具

    进行版本控制的基本操作包括添加文件到暂存区(Stage)——使用`git add [filename]`,提交更改到本地仓库——`git commit -m "commit message"`,以及将本地更改推送到远程仓库——`git push origin [branchname]`...

    git全部管理工具

    Git是世界上最流行的分布式版本控制系统,它允许开发人员追踪和管理代码变更历史,便于协作开发。在本压缩包中,我们提供了“git”本身,以及两个辅助工具——“小王八git”(可能是指TortoiseGit)和一个中文汉化包...

    Git远程仓库使用方法

    本教程将详细讲解如何创建和使用Git远程仓库,以及进行相关操作。 **1. 创建远程仓库** 在进行远程仓库操作前,首先需要在代码托管平台(如GitHub、Gitee)上创建一个远程仓库。登录你的账户,按照平台的指引创建一...

    Git远程版本库idea

    ### Git远程版本库Idea详解 #### 一、概述 Git是一种分布式版本控制系统,它能够高效地处理从小到大的项目版本管理以及多线程开发工作。对于开发者来说,掌握如何在IntelliJ IDEA中配置并使用Git是非常重要的技能...

    git版本管理软件

    ### git版本管理软件知识点详解 #### 一、版本管理系统概览 版本控制系统是软件开发过程中不可或缺的一部分,它帮助团队管理代码的变化,确保每个版本都可以追溯。版本控制系统主要分为两大类:集中式版本控制系统...

    Git版本控制管理 第2版.pdf.zip

    5. **远程仓库**:与GitHub或GitLab等远程服务交互,使用`git remote`和`git fetch`管理远程分支和标签。 6. **回溯与撤销**:`git reset`、`git revert`和`git checkout`命令的用法,如何恢复错误的提交或者回到...

    Python_Git和Dropbox之间的透明桥梁使用Dropbox共享文件夹作为Git远程.zip

    本资料"Python_Git和Dropbox之间的透明桥梁使用Dropbox共享文件夹作为Git远程.zip"探讨了一个创新的方法,即如何将Dropbox作为Git的远程仓库,实现两者之间的无缝协作。 首先,我们需要理解Git的基本概念。Git是一...

Global site tag (gtag.js) - Google Analytics