Due to some maintenance issues, this service has been switched in read-only mode, you can find more information about the why

and how to migrate your plugin documentation in this blogpost

Skip to end of metadata
Go to start of metadata

Plugin Information

View Git Parameter on the plugin site for more information.

Adds ability to choose branches, tags or revisions from git repository configured in project.

Plugin Info

This plugin allows you to assign git branch, tag, pull request or revision number as parameter in your  builds.

There is no need to set up anything special in plugin settings.
This plugin will read GIT SCM configuration from your projects.
This plugin used directly the Git Plugin and Git Client Plugin.

Basic configuration

Project configuration

Build with Parameters form

Example pipeline script

Important! version 0.9.4 or later

Branch type - Basic usage

Pipeline: Branch type - Basic usage (Declarative Pipeline)
// Using git without checkout 
pipeline {
  agent any
  parameters {
    gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
  stages {
    stage('Example') {
      steps {
        git branch: "${params.BRANCH}", url: 'https://github.com/jenkinsci/git-parameter-plugin.git'
Pipeline: Branch type - Basic usage (Scripted Pipeline)
        gitParameter(branch: '',
                     branchFilter: 'origin/(.*)',
                     defaultValue: 'master',
                     description: '',
                     name: 'BRANCH',
                     quickFilterEnabled: false,
                     selectedValue: 'NONE',
                     sortMode: 'NONE',
                     tagFilter: '*',
                     type: 'PT_BRANCH')
node {
    git branch: "${params.BRANCH}", url: 'https://github.com/jenkinsci/git-parameter-plugin.git'

Important settings:

  • It should be set a default value because initial build must get this information
  • Using git should be set a branchFilter as 'origin/(.*)' (origin is a remote server name)
Parameter type
  • PT_TAG

Important: If you need use other type (other then branch) parameter, you must use git within checkout 

Tag type

Pipeline: Tag type
// Using git within checkout 
pipeline {
    agent any
    parameters {
        gitParameter name: 'TAG', 
                     type: 'PT_TAG',
                     defaultValue: 'master'
    stages {
        stage('Example') {
            steps {
                checkout([$class: 'GitSCM', 
                          branches: [[name: "${params.TAG}"]], 
                          doGenerateSubmoduleConfigurations: false, 
                          extensions: [], 
                          gitTool: 'Default', 
                          submoduleCfg: [], 
                          userRemoteConfigs: [[url: 'https://github.com/jenkinsci/git-parameter-plugin.git']]

Branch Tag type

Pipeline: Branch Tag type
pipeline {
    agent any
    parameters {
        gitParameter name: 'BRANCH_TAG', 
                     type: 'PT_BRANCH_TAG',
                     defaultValue: 'master'
    stages {
        stage('Example') {
            steps {
                checkout([$class: 'GitSCM', 
                          branches: [[name: "${params.BRANCH_TAG}"]], 
                          doGenerateSubmoduleConfigurations: false, 
                          extensions: [], 
                          gitTool: 'Default', 
                          submoduleCfg: [], 
                          userRemoteConfigs: [[url: 'https://github.com/jenkinsci/git-parameter-plugin.git']]

Revision type

Pipeline: Revision type
pipeline {
    agent any
    parameters {
        gitParameter name: 'REVISION', 
                     type: 'PT_REVISION',
                     defaultValue: 'master'
    stages {
        stage('Example') {
            steps {
                checkout([$class: 'GitSCM', 
                          branches: [[name: "${params.REVISION}"]], 
                          doGenerateSubmoduleConfigurations: false, 
                          extensions: [], 
                          gitTool: 'Default', 
                          submoduleCfg: [], 
                          userRemoteConfigs: [[url: 'https://github.com/jenkinsci/git-parameter-plugin.git']]

Pull Requst type

Pipeline: Pull Requst type
pipeline {
    agent any
    parameters {
        gitParameter name: 'PULL_REQUESTS', 
                     type: 'PT_PULL_REQUEST',
                     defaultValue: '1',
                     sortMode: 'DESCENDING_SMART'
    stages {
        stage('Example') {
            steps {
                checkout([$class: 'GitSCM', 
                branches: [[name: "pr/${params.PULL_REQUESTS}/head"]], 
                doGenerateSubmoduleConfigurations: false, 
                extensions: [], 
                gitTool: 'Default', 
                submoduleCfg: [], 
                userRemoteConfigs: [[refspec: '+refs/pull/*:refs/remotes/origin/pr/*', url: 'https://github.com/jenkinsci/git-parameter-plugin.git']]])


Parameter Type

Name using in pipeline

Explains about PT_TAG or PT_BRANCH or PT_BRANCH_TAG:

Plugin using git ls-remote command to get remote tags or branches, this solution was implemented in  JENKINS-40232 - Getting issue details... STATUS .  This has been done for performance reasons. The plugin does not have to featch the repository before getting information

In code plugin useing  getRemoteReferences from GitClient, look implementation in CliGitAPIImpl 

package org.jenkinsci.plugins.gitclient

public interface GitClient {
	Map<String, ObjectId> getRemoteReferences(String remoteRepoUrl, String pattern, boolean headsOnly, boolean tagsOnly) throws GitException, InterruptedException;


Name using in pipeline

Branch Filter

Name using in pipeline

Tag Filter

Name using in pipeline

Sort Mode

Name using in pipeline

You can select the following sorting options for tags/revision/branches/branches_or_tags/pull requests

  • none
  • descending
  • ascending
  • ascending smart
  • descending smart

For the smart variants the compare treats a sequence of digits as a single character. Contributed by Graeme Hill.

Default Value

Name using in pipeline

In release 0.9.9 or later good to set a default value, because this value is using in the initial build (in Pipeline).
Default value is returned when some error occurred on getting data.

Selected Value

Name using in pipeline
selectedValue: 'NONE' or 'TOP' or 'DEFAULT'

Use repository

Name using in pipeline

Remember: You don't set a git repository into the plugin, this plugin using git repositories which are defined in project in SCM section!

If in the task are defined multiple repositories, this option specifies which the repository is taken into account on getting data.
If the option is not defined, is taken a first defined repository.
This option is a regular expression, which is compared to the 'Repository URL'.

You can define the multiple SCM for few way, you can use Multiple SCMs Plugin, specified many 'Repository URL' in one SCM  or define them in pipeline.

Consider an example based on two repositories:

Pipeline: Complex example
pipeline {
    agent any
    parameters {
        gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'BRANCH_A', type: 'PT_BRANCH', useRepository: '.*exampleA.git'
        gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'BRANCH_B', type: 'PT_BRANCH', useRepository: '.*exampleB.git'
    stages {
        stage('Example') {
            steps {
                git branch: "${params.BRANCH_A}", url: 'https://github.com/klimas7/exampleA.git'
                git branch: "${params.BRANCH_B}", url: 'https://github.com/klimas7/exampleB.git'

After initial run you get 

Example when 'Use repository' is not set:

Pipeline: Use repository is not set
pipeline {
    agent any
    parameters {
        gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
    stages {
        stage('Example') {
            steps {
                git url: 'https://github.com/klimas7/exampleA.git'
                git url: 'https://github.com/klimas7/exampleB.git'

 After initial run you get 

Quick Filter

Name using in pipeline

List Size

Name using in pipeline

Global configuration

Release 0.9.9 or later

Error handling

Release 0.9.9 or later

If an error occurred while retrieving data, the default value is returned.
Additional information is provided below, along with the cause of the error.


This error will occurred when repository is not configured or 'Use repository' option no match with any repository.

This error will occurred when repository not exists or URL is wrong.

This error will occurred when is no ssh command on Jenkins master.

Releases schedule



17/06/2019 Version 0.9.11

16/02/2019 Version 0.9.9

  • JENKINS-55769: Tag match filter shows more entries than direct command (git tag -l "$tagFilter")
  • JENKINS-55770: Intrusive and misleading warning text from the parameter selection display
  • JENKINS-54359: Change error handling

09/10/2018 Version 0.9.6

  • JENKINS-53911: Duplicate entries in list, if git repo is checked out twice.
  • JENKINS-52533: Display commit message on the build action
  • JENKINS-45925: Show git commit message when building with parameter "revision"

17/09/2018 Version 0.9.5

16/08/2018 Version 0.9.4

20/06/2018 Version 0.9.3

  • JENKINS-51521Git parameter does not show branch list in case deleteDir() is present in pipeline
  • JENKINS-51476: Git parameter plugin is not retrieving revision number

16/04/2018 Version 0.9.2

  • JENKINS-50776: Default selected item doesn’t always honor exactly Default Value
  • JENKINS-49727: Add optional parameter to specify the number of items the list will display 

18/02/2018 Version 0.9.1

  • JENKINS-45419'Use Repository' setting does not find other remote urls if multiple repos are added to job
  • PR #55: Add complete French support

02/11/2017 Version 0.9.0

  • JENKINS-47110: Retrieving Git references do not work with variable in Repository URL
  • PR #54: Help improvement: complete English translation, and reorder items
  • JENKINS-47078: IndexOutOfBoundsException for pipeline job
  • JENKINS-39530Add support to Pipeline projects

04/09/2017 Version 0.8.1

  • JENKINS-46216: Null Pointer exception when no default parameter provided
  • JENKINS-45577: [Git Parameter Plugin] Parameter does not support the definition from CLI
  • JENKINS-46624: fix remote name
  • JENKINS-46185: Set browser focus to filter after the QuickFilter has been filled
  • JENKINS-46038Extend list of supported type with pull request
  • JENKINS-26799: Multiple SCMs plugin support part 3 (Work fine when selected revisions)
  • JENKINS-42313Default Value not honoured

02/06/2017 Version 0.8.0

23/01/2017 Version 0.7.2

  • JENKINS-41091: git-parameter:0.7.1 breaks the multi-line parameters in rebuild

11/27/2016 Version 0.7.1

09/12/2016 Version 0.7.0

08/06/2016 Version 0.6.2

  • JENKINS-36833: Race Condition Populating Multiple Tag Parameters
  • JENKINS-36934: No return value passed to the url
  • JENKINS-31939: The top value is better to be chosen by default of to have such option (part 3)

07/19/2016 Version 0.6.1

  • JENKINS-31939: The top value is better to be chosen by default of to have such option (part 2)

07/06/2016 Version 0.6.0

  • JENKINS-36104: Add Repo SCM support (Derron Hu)
  • JENKINS-16290: git parameter plugin doesn't support Jenkins slave setup with git repos checked out only on slaves
  • JENKINS-35363: Git parameter filter doesn't work

05/03/2016 Version 0.5.1

04/02/2016 Version 0.5.0

1. User interface

  • JENKINS-27435: Quick branch filter (Thank Bruno P. Kinoshita for inspiration)
  • JENKINS-33963: Branch filter does not save the value (part of the work Joe Hansche)

2. Refactor/fix/feature

  • JENKINS-33361: Long release number in branch, tag or revision name
  • JENKINS-33084: Git Parameter plugin should prune stale remote branches (@darashenka)
  • JENKINS-31939: The top value is better to be chosed by default of to have such option
  • JENKINS-33831: Revision Parameter Type: ArrayIndexOutOfBoundsException
  • JENKINS-33912: Refactoring Test Case

01/16/2015 Version 0.4.0

  • Possibility to select branch, tag or branch (Alban Dericbourg)
  • Keep complex logics in jelly as less as possible (Yestin Sun)
  • support folders (Nicolas De Loof)
  • Minimized pom.xml as suggested by Jesse Glick
  • Removed LICENSE.txt as suggested by Jesse Glick

05/14/14 Version 0.3.2

User visible changes are:

  • Updated help texts for configuration and when selecting your tag/revision
  • Runs a fetch each time the user enters the "Build with parameter".
  • Run clone when fetch fails on workspace empty (Gabor Liptak)
  • Merging SortMode from graeme-hill
  • With an empty workspace the tags are calculated after we made a checkout. This may take a long time.

Changes relevant to developer

  • Added MIT-LICENSE.txt to use the same license as Jenkins-CI.
  • Added Contributors.textile
  • Display month not minutes in date. Add HH.mm. Display only first 8 chars of SHA1 (Niklaus Giger)
  • Add backup pluginRepository (Gabor Liptak)
  • Use GitTool to query configured location of the git executable (gliptak)
  • Upgrade to git 2.2.0. (christ66)
  • Build against latest stable Jenkins-CI version 1.554.1
  • New co-maintainer/developer Niklaus Giger (id ngiger)
  • Version 0.3 and 0.3.1 never made it to the distribution, because of problems with the release mechanism.

02/21/12 Version 0.2

  • Corrected error - plugin wasn't showing anything after change of main Git Plugin
  • Corrected major dis-functionality - plugin now it showing revisions only from correct job/project.
  • Adding support for choosing branch from which revisions/tags are returned

11/01/11 Version 0.1

  • Initial Release

Adds ability to choose branches, tags or revisions from git repositories configured in project.


  1. Unknown User (fcamblor)

    Hi !

    Thanks to provide this feature ! I need it for a few monthes (smile)

    Some concerns I have with the actual version of the plugin :

    • It would be great to lower the minimum jenkins version required to use the plugin (at least, going to the latest LTS 1.424). It's nothing than changing the parent pom version in your plugin artefact (and it would allow more people including me (wink) to use your plugin)
    • When I created a new job using the git parameter, the first time I launched the plugin, list was empty. Is it normal ? How do you retrieve tag lists (do you retrieve remote tags ? or local tags ?)
    • I would love to have a new parameter type : "every existing refs" (ie "every tags or branches in the git repo"). Typically, when I want to deploy my app, I want to either deploy a tag or a branch HEAD (wink)

    Thanks for the work though (smile)

  2. Unknown User (pawelr)


    I can't make this plugin to read new tag from original repository, what I'm getting is list of tags or SHA-1 hashes from previously cloned repository in Jenkis workspace.

    This is pretty useless because most often I need to choose most recent tag before cloning that repository to the workspace to be able to process this most recent in build steps.

    Could you please tell me how to get list of current tags from the original repository not old workspace clone?

    Besides it somehow cashes the results and after adding new tags I need to go to job configuration to switch from tag to revision, make a build, then switch backwards from revision to tag get tag list up to date (I tried that on two different Jenkins instances on different servers)

    1. Unknown User (vladiksip@centrum.cz)

      Hi Pawel,

      I've got the same problem as you... could you please tell me how did you solved it?

      Thanks in advance,


      1. Unknown User (pawelr)

        Hi Vlada,

        I'm using git post receive hook, this is a script which git runs after push:

        tags=`ls /var/git/data.gov.uk.git/refs/tags | sed -n '/.rc/!p' | tr '\n' ','`
        echo "TAGS=$tags" > /home/dgu/dgu_git_tags
        branches=`git --git-dir /var/git/data.gov.uk.git/ branch | tr -d '*' | tr -d ' ' | tr '\n' ','`
        echo "BRANCHES=$branches" > /home/dgu/dgu_git_branches

        It creates two files: dgu_git_tags and dgu_git_branches.

        These files are used by Extended Choice Parameter plugin with following configuration:

        Name: TAG

        Property File: /home/dgu/dgu_git_tags

        Property Key: TAGS

        I hope it helps.


        1. Unknown User (alexglue)

          Thanx for that great comment! it was very helpful!

        2. Unknown User (juanitogan)

          For anyone interested, I followed Pawel's lead and took it further so that you don't need to add hooks or scripts.  Pure Jenkins all the way with a tags and branches list that is always up to date.

          I describe how to do it in my blog post here:

          Jenkins and Git at Plaid Speed

          It uses the Extensible Choice Parameter plugin to launch an inline Groovy script to fetch current tag and branch data directly from a remote Git repo.

  3. Unknown User (nam)


    Has anyone managed to get this working? When I specify a git parameter and build, the page doesn't respond and hangs. 


  4. Unknown User (dankirkd)

    How do you indicate the repository?  I'm seeking to use this as a replacement for the List Subversion Tags parameter as we migrate from SVN to Git.



    1. Unknown User (dankirkd)

      I've added the use of this, asking for a pulldown of tags for a project that has been cloned and fetched, and that has 6 tags, and when the parameter choices are displayed the following is spewed to the logs:

      Caused by: hudson.plugins.git.GitException: Command "git.exe fetch -t" returned status code 128:
      stderr: fatal: Not a git repository (or any of the parent directories): .git

              at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:897)
              at hudson.plugins.git.GitAPI.launchCommand(GitAPI.java:858)
              at hudson.plugins.git.GitAPI.fetch(GitAPI.java:200)
              at hudson.plugins.git.GitAPI.fetch(GitAPI.java:204)
              at net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition.generateContents(GitParameterDefinition.java:236)
              at net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition.getTagMap(GitParameterDefinition.java:299)
              ... 159 more

      I cannot figure out what the issue is.  It is as if it isn't able to determine that I have a git workspace.

  5. Unknown User (z3r0)

  6. Unknown User (daw13)

    How does this plugin set the git directory?  Currently I see in the log that it is using D:\Jenkins but that directory doesn't exist and it is not the value of the JENKINS_HOME variable

    Thank you,

  7. Unknown User (engemasa)

    I think this is the right plugin that I'm looking for but I'm not sure how to configure it correctly to accomplish what I want. I'm trying to configure a Jenkins project to build ONLY if my git commit contains a specific tag named (demo). Could anyone assist me on configure this correctly? Thank you in advanced!

  8. Unknown User (slavik334)

    Hi all,

    how to set the default value - the most top value from the list?

  9. Unknown User (ckutz)

    Has anyone figured out what the 'branch' and 'tag filter' options are working?
    I would like to list only all 'release/*' branches, but neither branch nor tag filter doesn't seem to have any effect!?

  10. Unknown User (girlrichie)

    Its fixed by Boguslaw Klimas and was supposed to release by 04/02/16. Any updates on this ?? when will it be released?

  11. Unknown User (ssbarnea)

    It would be really useful if this plugin will allow us to specify the repository source for getting the branches or releases as these are usually not the ones from the same repository where we keep our build scripts.

  12. Unknown User (jhyland87)

    How do I have Jenkins checkout the selected revision? I was able to get the branch option working by naming the parameter named Branch, then for the jobs Branches To Build setting, I just referenced the environmental variable Branch.

    But I don't see where I can do that for the revision?


  13. Unknown User (skadnikov)

    Can anybody please help me with plugin configuration for multiple repository project?

    I have following issue using plugin.

    I have an Ansible deployment scenario managed by Jenkins. All Ansible scripts are located in repository https://<some host>/sops.git

    Ansible scripts deploy a war to application server. Source code for war file is located in repository https://<some host>/platform.git.

    To deploy necessary war file I need to enter GIT revision that is included into war build number.

    I'm trying to use Git parameter plugin.

    1. I added both repositories into jenkins job SCM list (first repository is https://<some host>/sops.git, second is https://<some host>/platform.git)
    2. I added parameter war_revision in the list of build parameters as a GIT parameter with type revision. To specify repository I entered full repository path to "Use repository" field
    3. When Im trying to start parameterized build - message "No GIT repository configured in SCM configuration" is shown in parameter value select field
    4. If I clean  "Use repository" field parameter field in a start build form is populated with repository https://<some host>/sops.git revisions - and that is not what i need 

    What do I need to do to get things done and have my repository https://<some host>/platform.git revisions list in parameter field?

    I'm using plugin version 0.8.0 with Jenkins 1.652

    KR, Sergey

    1. Unknown User (markewaite)

      You'll get far better results from asking that type of question on the Jenkins users mailing list, rather than as a question on a wiki page.

  14. Unknown User (nicolabeltrami)

    I've problem to set a Tag Filter.

    I need to get last tag of origin/master branch 

    On plugin i've insered this value:

    --points-at origin/master

    The complete git instruction should be:

    git tag -l --points-at origin/master

    This command on terminal works correctly, but on plugin i don't see nothing

    Do you have any Idea?


    git version 2.11.0


  15. Unknown User (richardflint)

    Could someone provide me with an example of how to use this plugin within a Jenkinsfile please. 

    1. Unknown User (stewartbryson)

      First... update to the latest version. 0.9.4 came out in the last day or so and is a requirement. Then you can do something like the following:

      agent {label 'master'}
        stages {
          stage('Get branch list') {
            input {
              message 'Do you see branches?'
              id 'see-branch-id'
              ok 'Look'
              submitter 'Stewart Bryson'
              submitterParameter 'approver'
              parameters {
                gitParameter branchFilter: 'origin/(.*)', defaultValue: 'develop', name: 'branch', type: 'PT_BRANCH'
            steps {
              echo "Just a test"

      This will at

      Second... it doesn't work with the Blue Ocean UI when doing an Input Stage or Step. I get this error:

      When I click Resolve Input, then I get the following:

      1. Unknown User (apgray)

        This works for branches.  How can I get a list of tags on a branch?

        1. Unknown User (stewartbryson)

          It's the type option I believe.

          1. Unknown User (apgray)

            Can you provide an example?

            The below doesn't work

            parameters {
                gitParameter tagFilter: 'origin/master', name: 'TAG', type: 'PT_TAG'
  16. Unknown User (dgibson)

    Me too please, I cannot find any documentation on it anywhere

    1. Unknown User (apgray)

      Documentation here but it is for branches in a repository rather than tags in a branch.

  17. Unknown User (sushijason)

    backgound information:

    1. we have two branch with the similar name: origin/master, origin/master-2015
    2. We tried to set the default value to origin/master, however, the selection pick up origin/master-2015 instead
    3. we are trying to use negative lookahead to filter out the origin/master-2015 branch, but the list is populated with letters and numbers like "A" "B" "C"...
    4. The regex that I am using in the filter is ^((?!master-2015).)*$


    1. is the issue addressed in the point 2 a known issue?
    2. Does negative lookahead regex works for this plugin?
  18. Unknown User (bechris)

    Issue 2 should be fixed by  JENKINS-50776 - Getting issue details... STATUS .

  19. Unknown User (subhajit_dutta)


     I have noticed that git plugin is checking out old and stale branches but not the latest . I am passing below parameters 

    Repository URL:git@github.XXXXXXXX:XXXX/XXXXX.git

    Branch Specifier (blank for 'any') ::^(?!origin/master$).*

    1. Unknown User (markewaite)

      You might check if a branch named "origin/master" is defined in the working directory of the agent performing the checkout.  That would create an ambiguity because the regular expression would match both the local branch "origin/master" and the remote branch "origin/master".

      One way to avoid that problem is to use a more specific name for the remote reference, such as "refs/heads/master" or "refs/remotes/origin/master".  Refer to the git plugin help for the "Branch Specifier" for more details of alternate ways to specify the branch name.

  20. Unknown User (jai_kunwar)

    I am using above configuration, in this case It shoud filter all the tags created in Lab2_Release branch. But it is fetching all tags form other branches as well. So could you plesae suggest whats wrong?

  21. Unknown User (edrandall)

    Hi, thanks for this, but please complete the documentation with some clear and concise examples for pipeline users.
    You mention Quick Filter up there but just the heading - what's the attribute name?  How about a table listing all the option attribute names and values?

    I tried guessing 'quickFilter' but just got an error.  Much digging through code reveals the option name is 'quickFilterEnabled'. 

  22. Unknown User (als18)

    Is there any way to make this work with scripted pipeline rather than declarative, or any plan to add support for that if currently not possible?

    1. Unknown User (klimas7)


      I added example

  23. Unknown User (arschroe)

    When selecting "branch or tag" as parameter type how can i later in my pipeline differentiate between those two type to checkout the select branch or the select tag (which needs to be treated differently as described above in the description)

  24. Unknown User (vitaly_il)

    Played with this plugin in Declarative Pipeline job, works nice with one issue - list of tags is not updated based on the current run, but on the previous one. Is there any solution for that?

  25. Unknown User (katonevi)

    For those who are using "Pipeline Script" (which is part of Jenkins Pipeline Project), you cannot define your repos in the GUI.

    You can, however (just like it is explained above in this documentation), define these repos in your Jenkinsfile (e.g. Pipeline Script).

    This is how to do it.  I suggest making a brand new project to build understanding first before implementing to your main pipeline:

    1. Create a new Jenkins Project: Pipeline Project
    2. Go way to the bottom and select "Pipeline Script"
    3. Paste the following contents in (in this example we are fetching the branch name that is passed by the user on Jenkins "Build with Parameters"):

      // Replace these URL to your target projects

      def project1 = "https://github.com/klimas7/exampleA.git" // you can use the scp url here as well. Doesn't matter"

      def project2 = "https://github.com/klimas7/exampleB.git" // you can use the scp url here as well. Doesn't matter"

      pipeline {
          agent any
          parameters {

              gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'MY_BRANCH_A', type: 'PT_BRANCH', useRepository: "${project1}"
              gitParameter branchFilter: 'origin.*/(.*)', defaultValue: 'master', name: 'MY_BRANCH_B', type: 'PT_BRANCH', useRepository: "${project2}"
          stages {
              stage('Example') {
                  steps {
                      git branch: "${params.MY_BRANCH_A}", url: "${project1}"
                      git branch: "${params.MY_BRANCH_B}", url: "${project2}"

      Please do NOT remove the "origin" or the "defaultValue" or anything from this sample!  We need a default branch to run successfuly at least once in order for this to work!

    4. Click "Save"
    5. On the outside (inside that Pipeline Project), click the "Build" button.
    6. Once the project builds successfully, refresh the page.  The "Build" button should now be "Build with Parameters"
    7. You should now be able to see the branches

      Question: I changed the URL inside the Jenkinsfile... but now the dropdown boxes aren't showing me the correct values.  What is going on?
      Answer: If you plan to update the URL, you must go inside the "Configuration" of the project, then uncheck the "This project is parameterized" (or whatever it says) checkbox.
      Once you uncheck it,  click the "save" button.
      The "Build with Parameters" button should now reset to "Build".  Click the "Build" button to update the parameters dropdown boxes values

      Question: Do we have to rebuild each time in order to keep the dropdown boxes up-to-date with our latest branches?

      Answer: No, you do not.  It will automatically be up-to-date... even if you haven't ran the build in weeks

      Question: What about credentials?  How do I handle credentials for my Jenkinsfile to login to my Git Server?
      Answer: You will have to get the credentialsId and append that to your code


      stages {
              stage('Example') {
                  steps {
                      git branch: "${params.MY_BRANCH_A}", url: "${project1}" credentialsId: '12345-1234-4696-af25-123455'


      In order to get the credentialsId:

      1. Click on your jenkins project (that you wish to get the credentialsId for)
      2. On the left-panel, click "Pipeline Syntax"
      3. Select the type of repo you are handling... then click "Generate" button

    Providing steps here for those who are struggling like I did all day.  Good luck.

    1. Unknown User (klimas7)

      Thanks you very much for a very useful description!

  26. Unknown User (katonevi)


    Is it possible to connect this plugin with the "Choice Parameter"? 

    So if I choose a branch-name of the choice parameter, this plugin will load the git-app from the "Choice Parameter", refreshing itself?

    Would be awesome.  This would be used for those who are looking for a "One-Jenkinsfile-pipeline" that allows the acceptance-tester to switch off the head at any time.

    Just a suggestion!

    1. Unknown User (klimas7)


      Unfortunately no because build parameters are independent of each other (after load on UI).

      I known one example when this is not a true: Active choices parameter - in this plugin you can define reference parameter (within this plugin). In this particular example this is a custom solution.

  27. Unknown User (michaelst)

    How I can use git plugin with both web hook and git parameters? If I use "refs/tags/${TagName}" as Branch Specifier the webhook won't work.


  28. Unknown User (daniel_vargas)

    Is it possible to load pipeline script from SCM from one repo  (let's call it repo1.git) and do a pull from a different repo (repo2.git), but populate the Git parameter branches from repo2.git?

    1. Unknown User (voorth)

      Funny, this seems to be the exact use case I have been struggling with lately;

      I'm trying to get a Jenkinsfile using branch discovery - the job needs to scan a different repo's tags on 'master' and offer a from/to parameter. Ideally both checkouts would be in there own subdirectory.

      I can get this to work with a freestyle job, but have burn unable to get this to work reliably using a discovered pipeline.

      Any ideas, anyone?

  29. Unknown User (prawen)


    I'm facing a very weird issue.  I'm using git parameter plugin to build Jenkins job with parameters which fetches branches/tags from git repo. This works fine on all Jenkins worker nodes. But I have a Jenkins job which runs on Windows worker where it fetches the branches/tags only for the very first time. If executed second time or later, I get below errors.


    • The default value has been returned
    • An error occurred while download data
    • Command "git ls-remote -h git@gitlab.com:xxx/yyy/zzz.git" returned status code 128:
      stderr: /tmp/ssh8652618501759734336.sh: 6: /tmp/ssh8652618501759734336.sh: ssh: not found
      fatal: Could not read from remote repository.

      Please make sure you have the correct access rights
      and the repository exists.
    • Please look at the Log
    • Please check the configuration


    Every time, I had to delete first build and execute the job to make it work. Please help. This issue happens only on Windows Worker.

    1. Unknown User (markewaite)

      See  JENKINS-45480 - Getting issue details... STATUS  for what sounds like a very similar case to what you described.