问题
I want to automatically pull from Git. For some reasons it is not possible to automate the password thing in the server I am using. So it needs to be done by a Bash file. Now my Bash coding is not that good. Then it is possible to enter the passphrase for the SSH key. But I have really no clue what to do...
#!/bin/bash
cd . public_html/auto_deploy/foldername && git fetch --all && git checkout --force "origin/master"
The above is not working... And then it needs to enter the passphrase, and I have no idea what to do then... How can I do this?
回答1:
Fortunately and according to the core Git documentation, you can use the following command to save your credentials for later on use - instead of typing it each time when prompted.
git config credential.helper store
Using this helper will store your passwords unencrypted on disk, protected only by filesystem permissions. This command stores credentials indefinitely on disk for use by future Git programs.
You probably don’t want to invoke this command directly; it is meant to be used as a credential helper by other parts of git
Interesting to check: Git Credentials
回答2:
If you want to do Git pull from a shell script, you need to use it like this:
git pull https://username:password@git_hostname.com/my/repository
回答3:
You can also generate ssh keys using ssh-keygen
and use the ssh://
method to git pull
.
SSH key allows you to establish a secure connection.
Before generating an SSH key, check if your system already has one by running cat ~/.ssh/id_rsa.pub
. If you see a long string starting with ssh-rsa
or ssh-dsa
, you can skip the ssh-keygen
step.
To generate a new SSH key just open your terminal and use code below. The ssh-keygen
command prompts you for a location and filename to store the key pair and for a password. When prompted for the location and filename you can press enter to use the default. It is a best practice to use a password for an SSH key but it is not required and you can skip creating a password by pressing enter. Note that the password you choose here can't be altered or retrieved.
ssh-keygen -t rsa -C "$your_email"
Use the code below to show your public key.
cat ~/.ssh/id_rsa.pub
Copy-paste the key to your user profile. Please copy the complete key starting with ssh-
and ending with your username and host.
来源:https://stackoverflow.com/questions/47339559/bash-script-to-automate-git-pull