我想创建一个可以审核git仓库分支的大厅工作。然而,我尝试过的git资源和许多其他类似的资源可以将一个分支拉入回购。我需要能够与所有远程分支机构一起下载回购。我怎么能这样做?
我已经尝试了以下不下载所有远程分支的选项:
https://github.com/vito/git-branches-resource
https://github.com/cloudfoundry-community/git-multibranch-resource
在下载资源后,我也无法使用git命令拉下额外的分支:
root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git fetch
root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git branch -r
origin/HEAD -> origin/master
origin/master
root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git fetch --all
Fetching origin
root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git branch -r
origin/HEAD -> origin/master
origin/master
这是我正在寻找的信息:
$ git branch -r
origin/HEAD -> origin/master
origin/asdf
origin/master
origin/test
我不能像我想的那样运行额外的pull命令,因为我想针对私有存储库运行此命令,并且不希望将我的ssh密钥插入到汇合中。
我注意到repos中的.git / config被设置为一个分支,这意味着它是configured for remote tracking:
[origin]
fetch = +refs/heads/master:refs/remotes/origin/master
用*替换该行中的master解决了这个问题,但我想要一个不那么手动的解决方案:
fetch = +refs/heads/*:refs/remotes/origin/*
一个选项是使用sed命令在作业中修复它:
cat .git/config | sed -e 's/master/*/g' > .git/config
git fetch --all
git branch -r
origin/HEAD -> origin/master
origin/asdf
origin/master
origin/test
但是我想要一些不那么混乱的东西。
答案 0 :(得分:1)
这是在所有远程分支中添加的正确fetch命令:
git fetch origin '+refs/heads/*:refs/remotes/origin/*'
答案 1 :(得分:0)
只需git fetch
,就会自动执行此操作。
答案 2 :(得分:0)
在使用git fetch
之前,您需要执行以下几个步骤:
将有效的git私钥传递给容器并将其放入〜/ .ssh / id_rsa
将github主机指纹添加到〜/ .ssh / config& chmod 0600
设置github全局配置
git config user.email "${GIT_USER_EMAIL}"
git config user.name "${GIT_USER_NAME}"
现在,你可以在docker容器中用git做任何你想做的事。
答案 3 :(得分:0)
只需将以下代码复制/粘贴到task.yml文件
中即可---
platform: linux
image_resource:
type: docker-image
source: {repository: alpine/git}
run:
path: sh
args:
- -exc
- |
git clone https://github.com/octocat/Hello-World.git
cd Hello-World
git branch -r
执行:
fly -t local execute -c task.yml
你可以跳过" git clone"如果您将回购作为输入传递,则执行步骤。
您可以将其保留在任务文件中,或者在您有预期的行为时将此配置移动到管道中。