标签: git-refspec

Git - 什么是"Refspec"

我一直在关注配置GitLab与Jenkins持续集成的指南.

作为该过程的一部分,有必要如下设置respec

+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

为什么这有必要没有在帖子中解释,所以我开始在网上寻找解释并查看官方文档以及一些相关的堆栈溢出问题,如此.

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

什么是refspec?

为什么上面的refspec是必要的 - 它做了什么?

git jenkins gitlab git-refspec

40
推荐指数
1
解决办法
2万
查看次数

git push 错误:src refspec main 在 linux 上不匹配

每当我尝试使用上传我的文件时,git push -u origin main 我都会收到如下错误

error: src refspec main does not match any
error: failed to push some refs to 'github.com:xxxxxx/xxx-project.git'
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,git push -u origin master它就可以完美运行并将我的文件上传到名为master. 在检查 .git/refs/heads我的项目时,我看到只有一个命名的文件,master所以我执行了git remote update它添加.git/refs/remotes/origin/main但仍然git push -u origin main不起作用。

我试过git push origin HEAD:main但产生了错误:

! [rejected] HEAD -> main (non-fast-forward) error: failed to push some refs to 'github.com:xxxxxxx/xxx-project.git' hint: Updates were rejected because a pushed branch tip is behind …

git branch github git-refspec

19
推荐指数
5
解决办法
3万
查看次数

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

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

hash=$(echo "Just a comment" | git hash-object -w --stdin)
git update-ref refs/comments/just $hash
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

git git-gc git-fsck git-refspec git-hash

9
推荐指数
1
解决办法
474
查看次数

错误:无法更新引用“refs/remotes/origin/xyz”:无法为“.git/logs/refs/remotes/origin/xyz”创建目录:没有这样的文件或目录

我在采取新措施时面临以下问题。( git pull)

错误:无法更新引用“refs/remotes/origin/xyz”:无法为“.git/logs/refs/remotes/origin/xyz”创建目录:没有这样的文件或目录

我检查了特定位置,既没有权限问题,也不存在这样的目录。

Jfyi 我已经搜索过类似的线程,但这些线程对我来说不起作用,其中大多数与追加、删除等相关。

我对此深感困惑,任何帮助将不胜感激。

git git-pull git-branch git-refspec

8
推荐指数
1
解决办法
5516
查看次数

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

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

$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | wc -l
217
$ git ls-remote http://gerrit.asterisk.org/asterisk refs/heads/* | grep -v refs/heads/team/ | wc -l
32
Run Code Online (Sandbox Code Playgroud)

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

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

git git-refspec

2
推荐指数
1
解决办法
1147
查看次数

git refs/pull/... 与 pull/

在不同的地方,寻找有关如何从 GitHub Pull Request 创建本地分支的说明,我看到了两个版本:

git fetch upstream refs/pull/PR_ID/head:NEW_LOCAL_BRANCH
Run Code Online (Sandbox Code Playgroud)

git fetch upstream pull/PR_ID/head:NEW_LOCAL_BRANCH
Run Code Online (Sandbox Code Playgroud)

我的问题是,地址中包含“”和包含“”有什么区别?refs
两者似乎都工作正常。

git github git-refspec

2
推荐指数
2
解决办法
1407
查看次数

Git 仅在特定分支上获取标签?

我在用

git fetch origin feature/blabla
Run Code Online (Sandbox Code Playgroud)

真正具体地说明我想要获取什么。

  • 但是,这不会获取当前在 上的标签feature/blabla
  • A git fetchonly(假设分支已签出)也获取标签。

是否可以使用我的版本并同时获取标签?(我不想用 获取所有标签git fetch --tags)。尤其是在另一个分支上时,这非常有用。

git git-refspec

1
推荐指数
1
解决办法
1675
查看次数