关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

同步GIT仓库的操作 -- remote命令

guanshanw 2023-10-07 12:07 90 浏览 0 评论

git remote 命令是用于同步变更的命令组中的一个。与其配合使用的其他命令包括git fetch git push git pull。

Git remote

git remote命令用来创建、查看和删除本地仓库与其他代码仓库之间的连接。remote链接更像是一种书签标记而不是与其他仓库之间的硬连接。这种标记通过一种简单的命名来代替不便使用的完整URL,而不是提供一种与仓库之间的实时通道。

举例来说,下图就显示了一个中心仓库和另一个开发者的仓库与你本地仓库的关联关系。设置remote之后你就可以使用缩略名表示其他仓库了,而不需要每次都输入完整的URL。


Git remote使用概览

git remote本质上是用来管理远端仓库列表的命令,这些远端仓库的信息都被保存在./git/config 文件中。下面这个命令可用来查看远端仓库列表的信息。

查看git remote配置信息

git remote

展示当前关联的其他仓库列表

git remote -v

与上面的命令一样,但是输出会包含每一个仓库的URL

创建和修改git remote配置

git remote命令也可当作一个用于修改./.git/config 文件的帮助命令。该命令用于管理与其他仓库的关联关系。比如下面的命令就会修改 ./.git/config 文件。当然也可以直接修改 ./.git/config 文件达成同样的结果。

git remote add <name> <url>

上面的命令创建了一个与远端仓库的关联关系。在此之后,你就可以使用<name>作为这个仓库的别名在其他git命令中使用。

git remote rm <name>

删除别名为<name>的远端仓库的关联关系。

git remote rename <old-name> <new-name>

将别名为<old-name>的远端仓库的关联关系重命名为<new-name>。

关于Git remote

Git被设计成为有能力为每个开发者提供一套完全独立的开发环境。这就意味着在仓库之间信息不会自动来回传递。相反,需要开发者手动将上游的提交pull回本地仓库,以及手动将本地提交push回远程的中心仓库。这么看来,git remote 命令真的就只是一个便于指向这些仓库的别名。

Origin Remote

每当你使用git clone命令clone一个远端的仓库,都会自动创建一个remote链接叫做origin,并指回被clone的远端仓库。由于这一操作为获取上游变更或者提交本地变更提供了快捷方式,于是通过此命令在本地创建中心仓库的副本成为开发者的常见操作。这种默认创建origin上游的行为也是很多托管在git上的项目称自己的中心仓库为origin的原因。

仓库URLs

Git支持通过很多方式来访问远端仓库。其中最简单的两种方式是通过HTTP和SSH协议。HTTP协议通常用于允许匿名只读访问仓库。比如:

http://host/path/to/repo.git

但是,通常来说通过HTTP地址的访问都无法进行push操作(应该不会有人愿意让匿名用户进行push操作)。对于可读可写的操作,应该使用SSH协议:

ssh://user@host/path/to/repo.git

通过SSH协议访问时,Git托管主机上应该有你的一个合法SSH账号,除此之外你无需进行其他任何配置,Git的具名SSH访问能力是开箱即用的。通常第三方托管平台,会提供你的Git项目的URL。

Git remote命令

很多Git命令都可以接受后续的命令作为“子命令”,git remote也不例外。下面就是一个git remote子命令的一个例子

ADD <NAME> <URL>

在./.git/config文件中添加一条记录,代表新增了一个名字叫做<name>的远端仓库,它的地址为<url>。

这个子命令接受 -f 选项,添加了-f 选项的命令执行之后会立即对新增的远端仓库执行一次git fetch命令。

它还接受 --tags 选项,增加这个选项的命令执行时会同时执行git fetch命令,并从该远端仓库导入所有tag。

RENAME <OLD> <NEW>

该命令会将./.git/config 文件中的一条记录的命名从 <OLD> 更新为 <NEW>。通过这个命令更新了远端仓库的命名之后,与之相关的分支和配置都会进行相应更新。

REMOVE or RM <NAME>

该命令修改./.git/config 文件并从中删除一条命名为 <NAME> 的记录。通过此命令删除远端仓库会自动删除与之相关的分支以及配置。

GET-URL <NAME>

输出远端的URL。

此命令接受 --push 选项,输出push URLs而不是fetch URLs。

接受 --all 选项时,则输出所有与该远端仓库相关的URLs。

SHOW <NAME>

该命令输出与远端仓库<NAME>相关的高级信息。

PRUNE <NAME>

删除所有本地仓库中上游为<NAME>而在远端仓库中不存在的分支。

接受 --dry-run 选项,带有此选项的命令会列出所有会被删除的分支名,但并不会真正删除他们。

Git remote 命令举例

除了origin作为远端仓库以外,你也许会需要通过该命令设置与其他团队成员的仓库链接。比如你的同事,John在 dev.example.com/john.git上维护了一个可被访问的git仓库,那么可以通过下面的命令与其建立链接。

git remote add john http://dev.example.com/john.git

使用这种方式访问其他个人的仓库,可以让你与他人之间的协作在不影响中心仓库的前提下安全进行。这对于多个小团队共同向一个大项目提交代码的场景会很有用。

显示远端仓库

默认执行git remote命令后会列出之前设置过的所有远端仓库的别名。就像下面这样:

$ git remote
origin
upstream
other_users_repo

执行git remote命令时在其后添加 -v 选项会列出更多信息,除了远端仓库的别名之外,还有与之相对应的仓库URL。-v 选项就是 "verbose"的简写。下面即是其执行结果输出举例:

git remote -v
origin  git@bitbucket.com:origin_user/reponame.git (fetch)
origin  git@bitbucket.com:origin_user/reponame.git (push)
upstream    https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream    https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (push)

添加远端仓库

git remote add命令用来添加与某个远端仓库的链接。添加之后,你就可以在其他git命令中使用其别名。执行之后,./.git/config 文件也会发生变更,可以通过文本编辑器查看这一变化。下面是其举例:

$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"] 
   url = https://bitbucket.com/upstream_user/reponame.git 
   fetch = +refs/heads/*:refs/remotes/remote_test/*

检视远端信息

git remote命令后跟 show 子命令会输出对应远端的详细信息。其中包括该远端上游相关的分支,以及其本身的push和fetch URLs。

git remote show upstream
* remote upstream
   Fetch URL: https://bitbucket.com/upstream_user/reponame.git
   Push URL: https://bitbucket.com/upstream_user/reponame.git
   HEAD branch: main
   Remote branches:
      main tracked
      simd-deprecated tracked
      tutorial tracked
   Local ref configured for 'git push':
      main pushes to main (fast-forwardable)

对Git远端的fetch和pull操作

一旦通过git remote add 命令向本地添加了某个远端仓库的链接,远端仓库的别名即可在其他Git命令中作为参数使用,以便与其远端仓库进行通信。git fetch和git pull都可以被用来读取远端仓库。这两者之间的具体差异会在相应章节进一步解释。

对Git远端的push操作

git push命令用于向远端仓库进行写入操作。

git push <remote-name> <branch-name>

上面的例子会向名为<remote-name>的远端仓库推送本地名为<branch-name>的分支。

对于远端链接的重命名以及删除

git remote rename <old-name> <new-name>

git remote rename 命令的含义即是其字面意思。执行结果即是将原本名为<old-name>的远端仓库链接修改为<new-name>。这一变更也会更新./.git/config文件中与之对应的配置。

git remote rm <name>

git remote rm用来删除名为<name>的远端仓库的链接。如果你根据本文一路执行下来,那么在示例开头的git remote add命令执行之后,本地应该已经建立了与remote_test的关联,现在我们尝试执行git remote rm remote_test命令。命令执行之后,会看到./.git/config文件中关于remote_test的配置信息不复存在。

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: