I want to do this command in one line:
git pull && [my passphrase]
How to do it?
I want to do this command in one line:
git pull && [my passphrase]
How to do it?
This is not exactly what you asked for, but for http(s):
https://user:pass@domain/repo
but that's not really recommended as it would show your user/pass in a lot of places...Usage examples for credential helper
git config credential.helper store
- stores the credentials indefinitely.git config credential.helper 'cache --timeout=3600'
- stores for 60 minutesFor ssh-based access, you'd use ssh agent that will provide the ssh key when needed. This would require generating keys on your computer, storing the public key on the remote server and adding the private key to relevant keystore.
git config --global credential.helper
for global configuration if needed. –
Cleanlimbed I found one way to supply credentials for a https connection on the command line. You just need to specify the complete URL to git pull and include the credentials there:
git pull https://username:[email protected]/my/repository
You do not need to have the repository cloned with the credentials before, this means your credentials don't end up in .git/config
. (But make sure your shell doesn't betray you and stores the command line in a history file.)
:password
part, you will be prompted for the password after hitting enter. That way, your password will not be saved in the bash history. –
Deoxyribose git pull origin
will mess up the reference to remote commit. As I understand, it updates the FETCH_HEAD
tag, but not the origin/*
branch. See #4053288 –
Clausius Using the credentials helper command-line option:
git -c credential.helper='!f() { echo "password=mysecretpassword"; }; f' git pull
Or if you also want to enter the username:
git -c credential.helper='!f() { echo "username=myusername"; echo "password=mysecretpassword"; }; f' git pull
git -c crendential.helper='...' git pull
but rather git -c crendential.helper='...' pull
i guess. –
Proportioned Below cmd will work if we dont have @ in password:
git pull https://username:pass@[email protected]/my/repository
If you have @ in password then replace it by %40 as shown below:
git pull https://username:pass%[email protected]/my/repository
I just went through this so supplying my answer as I ended up using Gitlab access tokens although some may need Github access tokens
I would prefer to use SSH but there is a gitlab bug preventing that. Putting my password in .netrc or the URL is not ideal. Credential manager needs to be restarted on server reboot which is not ideal.
Hence I opted for an access token which can be used like so: git clone https://<username>:<accessToken>@gitlab.com/ownerName/projectName.git
The access token is stored with the url so this is not secure but it is more secure than using username:password since an access token can be restricted to certain operations and can be revoked easily.
Once it's cloned down (or the URL is manually updated) all your git requests will use the access token since it's stored in the URL.
These commands may be helpful if you wish to update a repo you've already cloned:
git remote show origin
git remote remove origin
git remote add origin https://<username>:<accessToken>@gitlab.com/ownerName/projectName.git
Edit: Be sure to check the comments below. I added 2 important notes.
git remote set-url origin https://<username>:<accessToken>@gitlab.com/ownerName/projectName.git
–
Nonoccurrence I did not find the answer to my question after searching Google & stackoverflow for a while so I would like to share my solution here.
git config --global credential.helper "/bin/bash /git_creds.sh"
echo '#!/bin/bash' > /git_creds.sh
echo "sleep 1" >> /git_creds.sh
echo "echo username=$SERVICE_USER" >> /git_creds.sh
echo "echo password=$SERVICE_PASS" >> /git_creds.sh
# to test it
git clone https://my-scm-provider.com/project.git
I did it for Windows too. Full answer here
Note that the way the git credential helper "store" will store the unencrypted passwords changes with Git 2.5+ (Q2 2014).
See commit 17c7f4d by Junio C Hamano (gitster
)
credential-xdg
Tweak the sample "
store
" backend of the credential helper to honor XDG configuration file locations when specified.
The doc now say:
If not specified:
- credentials will be searched for from
~/.git-credentials
and$XDG_CONFIG_HOME/git/credentials
, and- credentials will be written to
~/.git-credentials
if it exists, or$XDG_CONFIG_HOME/git/credentials
if it exists and the former does not.
If you are looking to do this in a CI/CD script on Gitlab (gitlab-ci.yml
). You could use
git pull $CI_REPOSITORY_URL
which will translate to something like:
git pull https://gitlab-ci-token:[MASKED]@gitlab.com/gitlab-examples/ci-debug-trace.gi
And I'm pretty sure the token it uses is a ephemeral/per job token - so the security hole with this method is greatly reduced.
You can simply do this:
eval $(ssh-agent -s)
echo "password" | ssh-add ~/.ssh/id_rsa
git pull origin master
© 2022 - 2024 — McMap. All rights reserved.