当前位置: 首页 > 面试题库 >

为什么“ git clone”不采用refspec?

郤仰岳
2023-03-14
问题内容

看来,许多人已经开始用git clone组合代替git init && git fetch。这似乎很愚蠢,不幸的是,像Jenkins这样的工具无法为您做到这一点。那么,为什么git clone不采用refspec,就像git
fetch一样?

具体来说,如果您希望在Jenkins上运行gerrit触发的构建任务,则需要确保工作空间存在,否则jenkins将无法检出包含gerrit更改的修订。这是因为gerrit使用的引用路径不在git克隆获取的引用路径中。


问题答案:

请指定gerrit使用的refname是什么,克隆后将丢失。并会简单地git clone --origin <gerrit-suitable- origin-name>解决问题吗?

现在是长版。您的问题可能是两个问题加在一起。为什么对和有好处git init,为什么在初次克隆存储库时没有办法方便地过滤refspec?git remote add``git fetch

refspecs- 克隆初始化存储库后,该命令的remote-refspec行为是在.gitconfig中添加概述提取指令的默认部分:

[remote "origin"]
url = ssh://host/your.git
fetch = +refs/heads/*:refs/remotes/origin/*

这些是很好的默认设置,提供的refspec用于从远程获取所有内容。如果您需要更改refspec,则只需编辑文件即可手动进行。例如,

[remote "origin"]
url = ssh://host/your.git
fetch = +refs/heads/atari:refs/remotes/origin/atari
fetch = +refs/heads/vertigo:refs/remotes/origin/vertigo

编辑后,获取将仅涉及来自原始远程服务器的atarivertigo分支master,例如,通常存在的远程分支以及可能存在于远程数据库上的所有其他分支将被忽略。当然,这类似于git fetch在命令行上提供refspec的选项。

总体而言,这不是必须的,我认为这不是一个干净的设计,因为它能够在git clone命令行上预先支持多个初始refspecs,其唯一目的是将它们放在.gitconfig中。您甚至可以通过运行git clone然后sed在.gitconfig文件上编写几乎相同的脚本。在给定许多可能的refspec的情况下,在克隆时决定要结帐的初始分支也是有问题的。

init over clone- 假设我们避免讨论更高级的git clone设置,例如,利用--reference,浅深度--depth或创建裸仓库,init-add-
fetch和clone之间的区别对于您的日常工作来说是很小的。

纯克隆仅复制现有的存储库,并将“源”设置为创建源的远程目录。这带来了一些小麻烦-
强制您使用“原始”远程,创建远程跟踪分支,设置初始分支以及检出HEAD。但是,如果您从开始做起,git init那么您的掌控力会稍微提高一些。您可以开始手动添加遥控器并获取特定分支,而无需检出任何内容。

请注意,尽管git clone行为的许多方面都可以通过命令行开关来控制-也许git init只是偏爱它们的开发人员还不知道它们吗?问题中没有足够的信息来决定。与其他方法相比,git clone可以节省一些键入时间,避免出现宇宙热死并设置合理的上游默认值,例如拥有一个跟踪分支。我投票支持克隆。



 类似资料:
  • 问题内容: 为什么不带?为什么要带? 问题答案: 这是因为,在覆盖该方法中的接口,它不需要该对象是。 该接口指定了允许将对象写入流或基础存储的方法,但这可以通过序列化以外的其他过程来实现。该工具实现了此功能,但需要可序列化的对象。但是,它不能修改其实现的接口的签名。

  • 问题内容: 为什么Java编译器不会让我把成,是8位长,而这正大小的数据类型。 有人可以解释为什么1有效,为什么2不有效吗? 编辑 我读了答案,声称0xff是255,怎么办?不是吗,是什么导致0xff,-128或255或其他原因。为什么不将其视为字节,而不是将该字节的8位视为1。 问题答案: 在Java 类型是一个8位有符号整数类型与在范围内的值来。文字表示哪个超出了该范围。 在第一个示例中,您试

  • 对于我的具体情况,我想在约简中使用函数合成;例如: 这有一个编译错误: 相反,我需要做的是: 但是,这就失去了composition提供的无点样式。 为什么流API是这样设计的?是,所以用超类型声明方法的参数不是更有意义吗?

  • 本文向大家介绍什么是采矿?相关面试题,主要包含被问及什么是采矿?时的应答技巧和注意事项,需要的朋友参考一下 回答:**在区块链技术的背景下,挖掘是通过向网络提供工作证明来向大型分布式公共分类账添加交易的过程,即生成的区块是有效的。它还将新硬币添加到生成的块中。术语“采矿”以与比特币的关联而闻名。

  • 问题内容: 如果我使用以下代码,则会向我显示错误“类型’HttpConnection’不符合协议’NSObjectProtocol’” 如果我将HttpConnection子类化为NSObject,则可以正常工作。所以我的问题是,当我需要迅速采用NSURLConnectionDataDelegate协议时,为什么需要从NSObject继承该类? 问题答案: 本身继承自。 这意味着除了实现,和中的所

  • 问题内容: 我的程序输入一个文本文件,该文件的每个单词之间都用换行符分隔,我的程序接收该文本文件并处理数据,然后我需要输出到一个新文件,同时保持控制台输出。 现在,我想知道为什么当我将“ \ n”附加到stringBuilder时,它将在控制台中以换行的形式打印出来,但是在文件输出中却没有将其作为换行,而只是将所有单词放在一行中。 当我使用newLine时,它只会在控制台输出和输出文件中给换行。这