相关疑难解决方法(0)

错误:pathspec'test-branch'与git已知的任何文件都不匹配

我是Git的新用户.我已经分叉了一个名为Spoon-Knife的存储库(可以用Git练习分叉).然后,我通过运行在本地克隆它

git clone https://github.com/rohinichoudhary/Spoon-Knife.git
Run Code Online (Sandbox Code Playgroud)

该存储库包含三个分支,即

  • master,
  • test-branch,
  • change-the-title.

当我跑git branch,它只显示*master,而不是剩下的两个分支.当我跑

git checkout test-branch
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:pathspec'test-branch'与git已知的任何文件都不匹配.

为什么会这样?我怎么解决这个问题?

git github git-checkout git-fork

40
推荐指数
5
解决办法
12万
查看次数

Jenkinsfile:git rev-parse --abbrev-ref HEAD返回HEAD

我是jenkins/devops的新手; 我正在关注这个例子.当我在当地做(从终端):

git rev-parse --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)

我得到了当前分支的名称.但是从Jenkinsfile中,我得到的日志中:

HEAD
Run Code Online (Sandbox Code Playgroud)

在线研究了一段时间,到目前为止找不到原因.这种结果的潜在原因是什么?

额外细节

在我的jenkins文件中,我试图获取当前git分支的名称(触发webhook的名称),然后将其传递到'git branch'命令中,因此代码如下:

pipeline {
agent {
    label 'ubuntu'
}
stages {
    stage('check') {
    steps {
            script {
               env.GIT_BRANCH_NAME=sh(returnStdout: true, script: "git rev-parse --abbrev-ref HEAD").trim()
            }

            sh 'echo BRANCH_NAME ${GIT_BRANCH_NAME}'
            git branch: GIT_BRANCH_NAME, credentialsId: '******', url: 'https://*****/*****/*****.git'
      }
....
}
Run Code Online (Sandbox Code Playgroud)

在线

sh 'echo BRANCH_NAME ${GIT_BRANCH_NAME}'
Run Code Online (Sandbox Code Playgroud)

给了HEAD

我找到了一种解决方法,使用git name-rev -name-only HEAD并将脚本代码修改为:

script {
    env.GIT_BRANCH_PATH=sh(returnStdout: true, script: "git name-rev --name-only HEAD").trim()
    env.GIT_BRANCH_NAME=GIT_BRANCH_PATH.split('remotes/origin/')[1]
}
Run Code Online (Sandbox Code Playgroud)

现在我得到了正确的分支名称和步骤,但我宁愿采用不那么苛刻的方式做事.

使用最佳实践实现我想要实现的目标的最佳方法是什么?

PS我没有使用多分支管道,并且要求不使用多分支.

git jenkins jenkins-pipeline

17
推荐指数
4
解决办法
4330
查看次数

标签 统计

git ×2

git-checkout ×1

git-fork ×1

github ×1

jenkins ×1

jenkins-pipeline ×1