517

How can I change the current running project to another project in GCP (Google Cloud Platform) account using cli commands other than using gcloud init manually?

gcloud projects list will list the projects running on my account. I want to change the current project to any other project from the list using a cli command.

25 Answers 25

1013
Answer recommended by Google Cloud Collective
gcloud config set project $MY_PROJECT_ID

#=>

Updated property [core/project].

You may also set the environment variable $CLOUDSDK_CORE_PROJECT.

9
  • 138
    It helps to get the project names with: gcloud projects list
    – sww314
    Commented Aug 17, 2018 at 0:44
  • 72
    And to check which project is currently active, use gcloud config get-value project Commented Jun 11, 2019 at 1:32
  • 27
    The funny thing is, that I only switch my projects once or twice per month. So every time I have to google it and end up at this answer again and try to give it another upvote :-D
    – L.Butz
    Commented Mar 2, 2020 at 11:58
  • 3
    It seems --project=xyz is also a valid option for at least part of commands Commented Feb 10, 2022 at 15:40
  • 1
    I did gcloud config unset project so that it bugs me if I miss the --project argument. Thanks for the pointer.
    – TWiStErRob
    Commented Nov 24, 2022 at 9:51
171

Make sure you are authenticated with the correct account:

gcloud auth list
* account 1
  account 2

Change to the project's account if not:

gcloud config set account `ACCOUNT`

Depending on the account, the project list will be different:

gcloud projects list

- project 1
- project 2...

Switch to intended project:

gcloud config set project `PROJECT ID`
1
  • 1
    Super helpful! (Note, if you don't see your account in gcloud auth list, run gcloud auth login)
    – Ben
    Commented Sep 20, 2022 at 21:45
43

You should actually use the project ID and not the name as the other answers imply.

Example:

gcloud projects list

PROJECT_ID              NAME                  PROJECT_NUMBER
something-staging-2587  something-staging     804012817122
something-production-24 something-production  392181605736

Then:

gcloud config set project something-staging-2587

It's also the same thing when using just the --project flag with one of the commands:

gcloud --project something-staging-2587 compute ssh my_vm

If you use the name it will silently accept it but then you'll always get connection or permission issues when trying to deploy something to the project.

27

The selected answer doesn't help if you don't know the name of projects you have added gcloud already. My flow is to list the active projects, then switch to the one I want.

gcloud config configurations list

gcloud config configurations activate [NAME]
where [NAME] is listed from the prior command.

1
  • this is how I do it... I'm thinking about making alias "gcca develop"
    – confiq
    Commented Jul 21, 2020 at 13:11
20

It could be that I'm late to answer, but this command made me learn a lot about gcloud SDK

gcloud alpha interactive

It's easier to discover by yourself that you'll need gcloud config set project my-project.

However, what I like about gcloud is tab completion, so if you configure your gcloud config with configurations (I know it sounds weird but run this command gcloud config configurations list) you can easily switch between your own projects that you usually work:

gcca

The alias that I use is: alias gcca="gcloud config configurations activate" and it works fine with zsh gcloud plugin.

EDIT: To configure one of configurations I usually do this

gcloud config configurations create [CUSTOM_NAME]
gcloud auth login # you can also manually set but this is for lazy one
gcloud config set project [gcp-project-id]
gcloud config set compute/zone europe-west3-c
gcloud config set compute/region europe-west3

You can use ENV variables too to configure zone/project but I like when it's configured this way so I can use tab complication between projects.

3
  • 1
    This is a great answer. Here are the docs behind gcloud's configurations command too: cloud.google.com/sdk/gcloud/reference/topic/configurations
    – jket
    Commented Dec 16, 2021 at 0:58
  • thanks @jket, it took me awhile to customise gcloud the way that I find it perfect. I'm glad to share and that other people find it fit.
    – confiq
    Commented Dec 16, 2021 at 9:30
  • 1
    strictly speaking this is absolutely the most correct answer given. the others appear to modify the current configuration but @confiq actually nails it and gives the correct method to switch configurations
    – wandesky
    Commented Jan 14, 2022 at 18:32
14

Do the following:

1 - gcloud auth list
2 - gcloud projects list
3 - gcloud config set project *projectid* (replace project id with actual project id)

12

Also, if you are using more than one project and don't want to set global project every time, you can use select project flag.

For example: to connect a virtual machine, named my_vm under a project named my_project in Google Cloud Platform:

gcloud --project my_project compute ssh my_vm

This way, you can work with multiple project and change between them easily by just putting project flag. You can find much more information about other GCP flags from here.

7

For what its worth if you have a more than a handful of projects, which I do, use:

gcloud init

This will list all your projects and give you the option to change current project settings, add a new project configuration or switch:

Pick configuration to use:
 [1] Re-initialize this configuration [esqimo-preprod] with new settings
 [2] Create a new configuration
 [3] Switch to and re-initialize existing configuration: [default]
 [4] Switch to and re-initialize existing configuration: [project 1]
 [5] Switch to and re-initialize existing configuration: [project 2]
Please enter your numeric choice:

It will always ask you to login and display options for different google accounts that you may have.

Given that I manage multiple organisations and projects this approach lets' me to simply switch between them.

6

Before setting the Gcloud project see the list of available project gcloud projects list

then set the project using

gcloud config set project $MY_PROJECT_ID 

make sure you are passing project Id (not project name as both are different)

3

I do prefer aliases, and for things that might need multiple commands, based on your project needs, I prefer functions...

Example

function switchGCPProject() {
        gcloud config set project [Project Name]
        // if you are using GKE use the following
        gcloud config set container/cluster [Cluster Name]
        // if you are using GCE use the following
        gcloud config set compute/zone [Zone]
        gcloud config set compute/region [region]
        // if you are using GKE use the following
        gcloud container clusters get-credentials [cluster name] --zone [Zone] --project [project name]
        export GOOGLE_APPLICATION_CREDENTIALS=path-to-credentials.json
}
3

gcloud projects list

To get List of Projects.

gcloud config set project [Project-ID]

For setting default project.

You can also export your project id into variable to use in future commands which helps in avoiding typos with following.

MY_PROJECT_ID=[Project-ID]

echo $MY_PROJECT_ID

2

Check the available projects by running: gcloud projects list. This will give you a list of projects which you can access. To switch between projects: gcloud config set project <project-id>.

Also, I recommend checking the active config before making any change to gcloud config. You can do so by running: gcloud config list

2

I'm posting this answer to give insights into multiple ways available for you to change the project on GCP. I will also explain when to use each of the following options.


Option 1: Cloud CLI - Set Project Property on Cloud SDK on CLI

Use this option, if you want to run all Cloud CLI commands on a specific project.

gcloud config set project <Project-ID>

With this, the selected project on Cloud CLI will change, and the currently selected project is highlighted in yellow.

enter image description here


Option 2: Cloud CLI - Set Project ID flag with most Commands

Use this command if you want to execute commands on multiple projects. Eg: create clusters in one project, and use the same configs to create on another project. Use the following flag for each command.

--project <Project-ID>

Option 3: Cloud CLI - Initialize the Configurations in CLI

This option can be used if you need separate configurations for different projects/accounts. With this, you can easily switch between configurations by using the activate command. Eg: gcloud config configurations activate <congif-name>.

gcloud init

Option 4: Open new Cloud Shell with your preferred project

This is preferred if you don't like to work with CLI commands. Press the PLUS + button for a new tab. enter image description here

Next, select your preferred project.

enter image description here

2

#Get the list of the project gcloud projects list

#Then set the project id which you want to switch to and run below command

gcloud config set project $MY_PROJECT_ID

1

I add aliases to the .bash_alaises to switch to a different project.

alias switch_proj1="gcloud config set project ************"

Here is a script to generate aliases :) for all projects listed. Please update the switch_proj to unique project aliases that you can remember.

gcloud projects list | awk '{print "alias switch_proj=\"gcloud config set project " $1 "\""}'
1

gcloud config set project <PROJECT_ID>

0

To update your existing project to another project, you can use this command line:

gcloud projects update PROJECT_ID --name=NAME

NAME: will be the new name of your project.

1
  • 3
    The question is on how to change current working project to another, not on how to change the name of the project. Valuable info but not related to the question.
    – P.hunter
    Commented Dec 26, 2019 at 13:08
0

Check your project by running gcloud config list Then gcloud config set "project name"

0

You can try: gcloud config set project [project_id]

0

add this below script in ~/.bashrc and do please replace project name(projectname) with whatever the name you needed

function s() {
        array=($(gcloud projects list | awk /projectname/'{print $1}'))
        for i in "${!array[@]}";do printf "%s=%s\n" "$i" "${array[$i]}";done
        echo -e "\nenter the number to switch project:\c"
        read project
        [ ${array[${project}]} ] || { echo "project not exists"; exit 2; }
        printf "\n**** Running: gcloud config set project ${array[${project}]} *****\n\n"
        eval "gcloud config set project ${array[${project}]}"
}
0

Just use the gcloud projects list to get the project you have . Get the PROJECT_ID of the poject to use After that use gcloud set project --project=PROJECT_ID to set the project.

0

You can change the project using the gcloud command:

gcloud config set project <your_project_name>
0

Please try doing gcloud auth first and then gcloud config set project PROJECT ID Hopefully this should work.Happy learning

0

On of the very convenient ways is using direnv

For more details please see this: https://yurkol.com/articles/quick-switch-active-gcloud-config

0

You can do it with the 2 simple and safe steps:

List all available projects (optional):

gcloud projects list

Set the active project:

gcloud config set project PROJECT_ID

For example, if your project ID is my-project-123, you would run:

gcloud config set project my-project-123

Not the answer you're looking for? Browse other questions tagged or ask your own question.