为了账号安全,请及时绑定邮箱和手机立即绑定

很难理解git-get

很难理解git-get

Git
MM们 2019-07-13 14:31:34
很难理解git-get我很难理解吉特-费尔的细微差别。我知道做一个fetch,将远程参考信息提取到本地跟踪分支中。不过,我有几个问题:是否可能不存在本地跟踪分支?如果是的话,它会自动创建吗?如果我做了fetch并指定一个非跟踪分支作为目标?Git-FETCH的手册页指定:git-fetch <options> <repository> <refspec>如何使用respec将内容从远程主机获取到其远程跟踪分支?我相信这可能是可能的,如果我现在的头脑是在师父和我跑。git fetch origin master但是,我可以使用<+?src:dest>要达到同样的目的吗?我认为这将有助于我更好地理解这些概念。还有一个问题:我的.git/config文件有下面一行用于获取(只显示相关行):fetch = +refs/heads/*:refs/remotes/origin/*有人能解释一下这句话的确切意思吗?
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

首先,没有这样的概念局部跟踪只有树枝远程跟踪树枝。所以起源/主人的远程跟踪分支师父起源回购。

通常你会Git获取$Remote更新所有远程跟踪分支,并在需要时创建新分支。

但是,您也可以指定一个respec,但这不会触及您的远程跟踪分支,相反,它将获取您指定的分支并保存在FETCH_HEAD上,除非您指定了一个目的地。一般来说,你不想搞砸这件事。

最后,

fetch = +refs/heads/*:refs/remotes/origin/*

这意味着如果你这么做

git fetch origin

它实际上可以:

git fetch origin +refs/heads/*:refs/remotes/origin/*

意思是遥控器头/尾将是当地的遥控/起源/前,而加号意味着它们将被更新,即使它们不是快进的。

也许你认为的跟踪分支是与吉特拉力以及合并配置。


查看完整回答
反对 回复 2019-07-13
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

剩下的几个(大部分是从GIT提取令人遗憾的是,这在某些地方有点过时):

  • 如果远程跟踪分支(跟踪某个远程存储库中某个分支的分支)不存在,它将被创建。

  • 你拿来的树枝(<dst>在……里面[+]<src>:<dst>)不需要居住在remotes/<remote>/命名空间。例如,对于镜像存储库(git clone --mirror)respec是1比1。在过去的日子里,分开的遥控器布局(之前)remotes/<remote>/用于远程跟踪参考的命名空间)师父分支被调用为分支起源..即使是当前的标记也直接被取到tags/以镜像方式命名空间。

  • 如果你的分支被拉进(萤火虫的右手边)<src>:<dst>如果存在,git将检查下载是否会导致快速转发,即如果当前状态为<dst>是国家的祖先<src>在给定的远程存储库中。如果不是,你也不用-f/--force选项git-FETCH,或使用“+”前缀respec(使用+<src>:<dst>FETCH将拒绝更新该分支。

  • git fetch origin master等于git fetch origin master:,而不是git fetch origin master:master;它存储获取的师父(偏僻的)分支起源)在取头,而不是在师父分支或远程跟踪remotes/origin/master分支。它可以跟着git merge FETCH_HEAD..通常不直接使用,但作为一次性拉出而不设置远程跟踪分支的一部分:git pull <URL> <branch>.

  • +refs/heads/*:refs/remotes/origin/*作为价值远程获取配置变量意味着每个分支(refs/heads/(命名空间)在远程中。起源分别命名为远程跟踪分支。refs/remotes/origin/命名空间,例如师父分支机构起源(即:refs/heads/master(参考文献)起源/主人远程跟踪分支(即refs/remotes/origin/master参考文献)。“+”前缀意味着,即使在非快速转发的情况下,获取也会成功,这意味着当远程上的分支被重基或重绕(在过去重置为某种状态)或其他修改时。


查看完整回答
反对 回复 2019-07-13
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

注意,Git的主要维护者现在(2014年8月,Git 2.1)添加了以下解释git fetch:
(见提交fcb14b0通过Junio C.Hamano(gitster):

配置远程跟踪分支

您经常通过定期和反复地从同一个远程存储库中获取信息来与其交互。为了跟踪这样一个远程存储库的进度,git fetch允许您配置remote.<repository>.fetch配置变量

通常,这样的变量可能如下所示:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*

使用此配置的方式有两种:

  • 什么时候git fetch在没有指定要在命令行上获取哪些分支和/或标记的情况下运行。git fetch origingit fetchremote.<repository>.fetch值用作参考规范-它们指定要取哪些参考文献,哪些本地参考文献需要更新。.
    上面的示例将获取存在于origin(即任何与值的左手边相匹配的引用,refs/heads/*)中的相应远程跟踪分支。refs/remotes/origin/*等级制度。

  • 什么时候git fetch与显式分支和/或标记一起运行,以便在命令行上获取。git fetch origin master<refspec>s在命令行上给定,确定要获取的内容(例如,master在示例中,它是master:,这反过来又意味着“获取”master“分支,但我没有明确说明要从命令行更新哪个远程跟踪分支”),示例命令将获取。master“树枝。
    这个remote.<repository>.fetch值确定更新哪个远程跟踪分支(如果有的话)。
    以这种方式使用时,remote.<repository>.fetch值在决定什么获取(即当命令行列出respecs时,这些值不被用作respecs);它们仅用于决定。哪里获取的引用是作为映射存储的。


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 748 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信