问题标签 [git-refspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
116 回答
3201674 浏览

git - 在 Git 中推送提交时消息“src refspec master does not match any”

我克隆我的存储库:

但是在我更改了一些文件和add它们commit之后,我想将它们推送到服务器:

但我回来的错误是:

0 投票
1 回答
185 浏览

git - Git 推送配置是否也允许指定分支?

我有一个分支,它从一个遥控器拉出并推送到另一个遥控器,U 用于git branch --set-upstream-to=xxxx xxxx设置拉取仓库并git config remote.origin.pushurl user@user.com:repo.git设置推送仓库。

尽管 pull 来自master源 repo 上的分支,但它push会转到upstream目标 repo 上的分支。

当我切换到分支并执行 a 时,git push我会收到通常的--global push.default消息:

有没有办法为特定分支指定它应该推送到远程的哪个分支,而不是push.default值,并且类似地用于拉取?

0 投票
1 回答
320 浏览

git - Git 获取对象,没有引用

我想从远程仓库中获取对象,但不更新任何本地引用。(是的,我知道这是一个相当不寻常的案例。)

我看到我可以将 refspec 传递给git fetch,但是当我传递一个空的 ( git fetch my-remote '') 时,它似乎默认为其他东西,因为我收到以下错误:

有没有办法指定“空”参考规范?

0 投票
1 回答
343 浏览

git - Gerrit 如何实现它的“神奇”参考?

我目前正在实施 Gerrit 作为中央代码审查系统。在试图了解 Gerrit 来龙去脉的过程中,我卡在了下面这句话上。取自Gerrit 文档

由于 Gerrit 在其自己的进程空间内实现了整个 SSH 和 Git 服务器堆栈,因此 Gerrit 可以完全控制存储库的更新方式,以及git push 最终用户或repo upload. 这允许 Gerrit 提供神奇的 refs,例如refs/for/*用于新的变更提交和refs/changes/*变更替换。

上面的陈述是什么意思,特别是这句话:“由于 Gerrit 在自己的进程空间内实现了整个 SSH 和 Git 服务器堆栈”?我尝试搜索相关问题,但我找到的最接近的问题是Why is git push gerrit HEAD:refs/for/master used instead of git push origin master,但它没有提供关于如何实现服务器堆栈的充分解释允许 Gerrit 提供神奇的 refs。如果之前确实有人问过类似的问题,我们深表歉意。谢谢!

0 投票
1 回答
811 浏览

git - 忽略 git refspec 中的单个命名空间

考虑以下存储库。它有很多用于团队成员的私有分支,都在refs/heads/team/命名空间下,我不想获取,但我仍然想获取所有其余部分,包括该team命名空间之外的任何可能新创建的分支。

我正在获取fetch = +refs/heads/*:refs/remotes/golden/*,但这些私有分支只是压倒了我的refs/remote/golden命名空间,使其更难概览,并且还需要更多空间用于本地存储库。

是否可以获取refs/heads/*但排除refs/heads/team/*

0 投票
1 回答
1208 浏览

git - 为什么 Git 只在 refs/remotes/origin 下存储分支?

在查看 Git 标签并了解它们是如何传播的以及有多少解决方法可以修剪它们之后,我得出结论,最好的解决方法是更改refs/remotes/origin/​​ . 那么,为什么 refs 被refs/remotes/origin/假定为分支?在远程引用下复制顶级结构也很容易:

但是所有与 Git 一起工作的工具都假定 refs underrefs/remotes/origin/是分支。

这是否有实际原因,或者仅仅是一个意外?

编辑1:

在对此进行了更多研究后,我发现它会在轻量级标签git log --decorate正确显示带注释refs/remotes/origin/tags/*的标签,但会显示为分支。

配置文件:

轻量级标签:

注释标签:

但是,正如预期的那样,该git tag -l命令根本没有显示它们。

0 投票
0 回答
552 浏览

git - 自定义对象和参考的注意事项是什么?

假设我想编写一个助手,允许以可以传播到克隆的方式将一些元数据附加到存储库refs。简单示例(一个克隆原型,它甚至没有将注释附加到任何其他 git 对象):

即我创建了一个blob带有哈希的对象hash并引用它,refs/comments/just因此git fsck --unreachable不会抱怨它,git gc也永远不会prune成为对象。

但这当然是一个非常简单的例子,实际上我对更复杂的功能感兴趣。在那里,我的问题是,我可以“合法”做什么,我应该绝对避免做什么?

例如,SE 上的几篇帖子是关于用户必须从重复tree条目中恢复的。因此,一个“不要”就是“不要创建tree带有重复条目的”。另一个例子是“确保你的对象是可访问的,所以不会git prune删除它们”。还有什么?

我可以创建自定义对象类型吗?对树中的 blob 使用“无效”文件模式?我在哪里可以找到概述?或者我应该git-fsck手动检查 's source 以查看什么构成错误(以及哪些是可以忽略的)?

0 投票
1 回答
2657 浏览

jenkins - Jenkins Pipeline - Git 插件 3.1.0 - rawRefSpecs 不起作用

我将 Jenkins 与管道插件和 Git 插件版本 3.1.0 一起使用。根据这张票:https ://issues.jenkins-ci.org/browse/JENKINS-40908 ,此功能是 3.1.0 版本的一部分。

尽管如此,我还是没有成功设置 rawRefSpecs 变量。

这是我的管道配置:

这是我运行计划时的输出:

我们可以看到 fetch 保留了 refspecs 的默认参数值。

看起来 GitStep 强制分支规范为“*/”+分支,并忽略除分支、凭据 ID 和 url 之外的任何其他参数。

https://github.com/jenkinsci/git-plugin/blob/f6ace83fe36740a1ab35612d3b4c5b400647f6ea/src/main/java/jenkins/plugins/git/GitStep.java

那我怎么能将 refspec 传递给命令呢?

0 投票
2 回答
37557 浏览

git - Git - 什么是“Refspec”

我一直在按照本指南配置 GitLab 与 Jenkins 的持续集成。

作为该过程的一部分,有必要按如下方式设置 refspec:+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

为什么这是必要的,帖子中没有解释,所以我开始在网上寻找解释,并查看了官方文档以及一些相关的 StackOverflow 问题,例如this one

尽管如此,我仍然感到困惑:

refspec 到底是什么?为什么上述 refspec 是必要的——它有什么作用?

0 投票
1 回答
950 浏览

git - git refspec 可以包含多个通配符吗?

git ls-remote origin在我有权访问的 repo 上运行,我看到以下形式的分支,使用git namespaces

我想将这些映射到refs/remotes/<username>/<branch-name>.

github 帮助页面提供了一个示例,说明如何通过将其添加到以下内容来解决此问题的更简单版本.git/config

我可以通过以下方式使事情适合我的情况:

但这需要我提前知道所有用户名。不幸的是,使用两个*s 不起作用:

有没有办法实现这种重新映射?