首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义自定义git遥控器

定义自定义git遥控器
EN

Stack Overflow用户
提问于 2019-12-30 05:37:23
回答 2查看 773关注 0票数 0

我读过这个著名的文章

我理解bobclair如何与同步,但不了解alicebobE 211和E 112davidE 213E 114clairE 215之间的联系。

文章说:

除了集中的推拉关系外,每个开发人员还可以从其他同事那里提取变更,组成子团队。 从技术上讲,这只意味着定义了一个名为bob的Git远程,指向Bob的存储库,反之亦然。

我是否正确地理解了两个团队(alice和david)从原点同步,但创建了自己的git服务器端点以使bob和clair可以访问

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-30 07:46:34

在Git中,遥控器是一个简短的名称--嗯,只要你愿意--它代表一个URL。它所做的不仅仅是这些,但这是它最初的主要工作。

当您使用git clone创建Git存储库时,git clone命令为您添加了一个远程存储库。这个遥控器的标准名称是origin。因此,大多数Git存储库都有一个名为origin的远程存储库。

若要添加另一个远程设备,请使用:

代码语言:javascript
复制
git remote add

它需要两个必需的参数:

  • 要添加的遥控器的名称,以及
  • 网址。

若要查看附加到某些存储库的URL,请使用git config --get remote.name.urlgit remote -v

代码语言:javascript
复制
$ git remote -v
origin  ssh://git@github.com/path/to/repo.git (fetch)
origin  ssh://git@github.com/path/to/repo.git (push)
$ git config --get remote.origin.url
ssh://git@github.com/path/to/repo.git

git remote命令显示每个远程实际上可以存储两个URL。默认情况下,在.url下的主命令用于git fetchgit push。如果您使用remote.name.pushurl,设置了第二个选项,那么一个用于git push,而主一个用于git fetch

如果爱丽丝经常要从鲍勃那里取东西,她可能会这样做:

代码语言:javascript
复制
git remote add bob <url>

这里的URL可以是ssh:// URL、git:// URL、https:// URL或file:// URL,也可以是本地路径(有些人在网络共享驱动器或VM中使用这种方式)。请注意,当使用本地路径时,Git会做出文件系统特定的假设(如果可能的话),这可能会导致在使用网络共享驱动器等方面的怪异。当使用file:// URL时,Git会复制,这样如果网络崩溃,您仍然可以在本地工作。

一旦有了远程,git fetch就会获得它们的分支名称,并相应地将它们的提交复制到您的存储库中。因此,Alice通常以bob/master结束,如果Bob有一个名为feature的分支,则可能是bob/feature。但是您可以在这些不同的远程名称下设置其他设置。例如,爱丽丝可以将她的bob遥控器配置为只获取一些选定的Bob分支名称。

一旦有了一个以上的遥控器,没有参数的git fetch就变得有趣了。如果您只有一个远程origin,名为origin,那么git fetch总是以您的短名称origin从URL中提取。如果您有两个或两个以上,git fetch使用哪个遥控器?答案在文献资料中;请参阅DESCRIPTION部分。

注意,--all选项to git fetch意味着从所有遥控器中提取。除非您有多个远程定义,否则永远没有理由使用git fetch --all

票数 1
EN

Stack Overflow用户

发布于 2019-12-30 05:49:22

首先,让我说一下,您显示的图表似乎不是一个很好的例子。它可能是深入了解git,但不一定是常见的用法。也就是说,对(alice,bob),(alice,david)和(david,clair)可以通过不同的方式同步,而无需经过原点。

  1. 一对可以设置一个第二原点,以供推送/获取。我有时有多个起源(例如GitHub,GitLab,BitBucket)
  2. 一对可以同步到网络文件系统位置。您可以从文件系统位置(例如.../.git或裸.../reponame.git目录)执行git提取。有时,我这样做是为了一个快速的本地副本,而不是从原始目录重新克隆第二个目录。
  3. 也许有时,一个人只是将另一个.git目录的实际副本作为重新启动点。

要扩展(2),假设我已经有了一个git版本目录advent-o-code-2019

代码语言:javascript
复制
cd advent-o-code-2019
cd ..
mkdir temp-dir
cd temp-dir
git init
git fetch ../advent-o-code-2019/.git master

此时,temp-dir中的git状态已经创建了一个名为FETCH_HEAD的新引用,以及原始回购中的主对象的所有祖先对象。我通常会这样做:

代码语言:javascript
复制
git reset --hard FETCH_HEAD
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59526165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档