ā§.ā§§ā§Ē āĻāĻŋāĻ āĻā§āϞāϏ – āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏā§āĻā§āϰā§āĻ
āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏā§āĻā§āϰā§āĻ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āϰāĻŋāĻŽā§āĻā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ SSH transport āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻĒāĻā§āώ⧠passphrase āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ āĻā§(Key) āĻĨāĻžāĻāĻž āϏāĻŽā§āĻāĻŦ, āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻĒāύāĻžāϰ āĻāĻāĻāĻžāϰāύā§āĻŽ(username) āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ(password) āĻāĻžāĻāĻĒ āύāĻž āĻāϰ⧠āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻĄā§āĻāĻž āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āϝāĻžāĻāĻšā§āĻ, HTTP āĻĒā§āϰā§āĻā§āĻāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻŋ āϏāĻŽā§āĻāĻŦ āύāϝāĻŧ – āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻāϝā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻāĻāĻžāϰāύā§āĻŽ(username) āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ(password) āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻāĻāĻŋ āĻĻā§āĻŦāĻŋ–āĻĢā§āϝāĻžāĻā§āĻāϰ(Two-factor) āĻ āĻĨā§āύāĻāĻŋāĻā§āĻļāύ(Authentication) āϏāĻš āϏāĻŋāϏā§āĻā§āĻŽāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāϰāĻ āĻāĻ āĻŋāύ āĻšāϝāĻŧā§ āĻāĻ ā§, āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻāύā§āϝ āϝ⧠āĻā§āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϤāĻž āĻāϞā§āĻŽā§āϞā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻā§āĻāĻžāϰāĻŖāϝā§āĻā§āϝ āύāϝāĻŧāĨ¤
āϏā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ, āĻāĻŋāĻā§āϰ āĻāĻāĻāĻŋ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏāĻŋāϏā§āĻā§āĻŽ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻāĻāĻŋāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŋāĻā§āϰ āĻāϝāĻŧā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāĻā§āĻ°Â āĻŦāĻžāĻā§āϏ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϞ:
Â
- āĻĄāĻŋāĻĢāϞā§āĻ āϏāĻŦ āĻā§āϝāĻžāĻļ(cache) āĻāϰāĻž āĻšāϝāĻŧ āύāĻž. āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻāϝā§āĻ āĻāĻĒāύāĻžāĻā§ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄā§āϰ āĻāύā§āϝ āĻ āύā§āϰā§āϧ āĻāϰāĻŦā§āĨ¤
Â
- “āĻā§āϝāĻžāĻļā§” āĻŽā§āĻĄ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻāύā§āϝ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§ āĻāύ–āĻŽā§āĻŽāϰāĻŋāϤ⧠āϰāĻžāĻā§āĨ¤ āĻā§āύ⧠āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāĻāύā§āĻ āĻĄāĻŋāϏā§āĻā§ āϏāĻāϰāĻā§āώāĻŋāϤ āĻĨāĻžāĻā§ āύāĻž āĻāĻŦāĻ 15 āĻŽāĻŋāύāĻŋāĻā§āϰ āĻĒāϰ āĻā§āϝāĻžāĻļ āĻĨā§āĻā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧāĨ¤
Â
- “āϏā§āĻā§āϰ” āĻŽā§āĻĄ āĻĄāĻŋāϏā§āĻā§āϰ āĻāĻāĻāĻŋ āĻĒā§āϞā§āĻāύ–āĻā§āĻā§āϏāĻ āĻĢāĻžāĻāϞ⧠āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāϰ āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻŋāĻ āĻšā§āϏā§āĻā§āϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āύāĻž āĻāϰāĻž āĻĒāϰā§āϝāύā§āϤ, āĻāĻĒāύāĻžāĻā§ āĻāϰ āĻāĻāύāĻ āĻāĻĒāύāĻžāϰ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻāĻžāĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤ āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāϰ āύā§āϤāĻŋāĻŦāĻžāĻāĻ āĻĻāĻŋāĻ āĻšāϞ āϝ⧠āĻāĻĒāύāĻžāϰ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄāĻā§āϞāĻŋ āĻāĻĒāύāĻžāϰ āĻšā§āĻŽ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻĒā§āϞā§āĻāύ āĻĢāĻžāĻāϞ⧠āĻā§āϞāĻŋāϝāĻŧāĻžāϰāĻā§āĻā§āϏāĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
Â
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŽā§āϝāĻžāĻ(Mac) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āĻāĻŋāĻ āĻāĻāĻāĻŋ “osxkeychain” āĻŽā§āĻĄā§āϰ āϏāĻžāĻĨā§ āĻāϏā§, āϝāĻž āĻāĻĒāύāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āϏā§āϰāĻā§āώāĻŋāϤ āĻā§–āĻā§āĻāĻ¨Â āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āĻā§āϝāĻžāĻļā§ āĻāϰā§āĨ¤ āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻĄāĻŋāϏā§āĻā§ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋ āĻāĻāύāĻ āĻŽā§āϝāĻŧāĻžāĻĻā§āϤā§āϤā§āϰā§āĻŖ āĻšāϝāĻŧ āύāĻž, āϤāĻŦā§ āϏā§āĻā§āϞāĻŋ āĻāĻāĻ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻžāĻĨā§ āĻāύāĻā§āϰāĻŋāĻĒā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āϝāĻž HTTPS āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻāĻŦāĻ āϏāĻžāĻĢāĻžāϰāĻŋ auto-fills āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĨ¤
Â
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāύā§āĻĄā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āĻāĻĒāύāĻŋ āĻāĻāύā§āĻĄā§āĻā§āϰ āĻāύā§āϝ āĻāĻŋāĻ āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻŋāĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ āĻĢāĻŋāĻāĻžāϰāĻāĻŋ āĻāĻžāϞ⧠āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻŦāĻž āĻāϞāĻžāĻĻāĻžāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āϏā§āĻŦāϤāύā§āϤā§āϰ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻšāĻŋāϏāĻžāĻŦā§ āϏāϰā§āĻŦāĻļā§āώ GCM āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻāĻŋ āĻāĻĒāϰ⧠āĻŦāϰā§āĻŖāĻŋāϤ âosxkeychainâ helper āĻāϰ āĻŽāϤā§, āĻāĻŋāύā§āϤ⧠āϏā§āύāϏāĻŋāĻāĻŋāĻ āĻĄāĻžāĻāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠Windows Credential Store āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻāĻāĻŋ WSL1 āĻŦāĻž WSL2-āĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ GCM āĻāύāϏā§āĻāϞ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻĻā§āĻā§āύāĨ¤
Â
āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻā§āϝāĻžāϞ⧠āϏā§āĻ āĻāϰ⧠āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻŦā§āĻā§ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āύ:
$ git config --global credential.helper cache
āĻāĻ helpers āĻā§āϞāĻŋāϰ āĻāĻŋāĻā§ āĻŦāĻŋāĻāϞā§āĻĒ āĻāĻā§. âstoreâ helper āĻāĻāĻāĻŋ –file <path> āĻāϰā§āĻā§āĻŽā§āύā§āĻ āύāĻŋāϤ⧠āĻĒāĻžāϰā§, āϝāĻž āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰ⧠āϝā§āĻāĻžāύ⧠āĻĒā§āϞā§āĻāύ–āĻā§āĻā§āϏāĻ āĻĢāĻžāĻāϞ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ (āĻĄāĻŋāĻĢāϞā§āĻ āĻšāϞ ~/.git-credentials)āĨ¤ “cache” helper  –timeout <seconds> āĻ āĻĒāĻļāύāĻāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰā§, āϝāĻž āϤāĻžāϰ āĻĄā§āĻŽāύ(daemon) āĻāĻžāϞāĻžāύā§āϰ āϏāĻŽāϝāĻŧ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠(āĻĄāĻŋāĻĢāϞā§āĻ āĻšāϞ “900”, āĻŦāĻž 15 āĻŽāĻŋāύāĻŋāĻ)āĨ¤ āĻāĻĒāύāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāϞ āύāĻžāĻŽā§āϰ āϏāĻžāĻĨā§ “store” helper āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻŦā§āύ āϤāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻāĻāĻžāύ⧠āϰāϝāĻŧā§āĻā§:
$ git config --global credential.helper 'store --file ~/.my-credentials'
āĻāĻŋāĻ āĻāĻŽāύāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ helper āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻšā§āϏā§āĻā§āϰ āĻāύā§āϝ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ  āϏāύā§āϧāĻžāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻŋāĻ āϏā§āĻā§āϞāĻŋāĻā§ āĻā§āϰāĻŽāĻžāύā§āϏāĻžāϰ⧠āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰāĻŦā§ āĻāĻŦāĻ āĻĒā§āϰāĻĨāĻŽ āĻāϤā§āϤāϰ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻĒāϰ⧠āĻĨāĻžāĻŽāĻŦā§āĨ¤ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ  āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻŋāĻ āϤāĻžāϞāĻŋāĻāĻžāϰ(List) āϏāĻŽāϏā§āϤ helpers āĻā§ āĻāĻāĻāĻžāϰāύā§āĻŽ(username) āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ(password) āĻĒāĻžāĻ āĻžāĻŦā§ āĻāĻŦāĻ āϤāĻžāϰāĻž āϤāĻžāĻĻā§āϰ āϏāĻžāĻĨā§ āĻā§ āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āĻŦā§āĻā§ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤āĻāĻāĻžāύ⧠āĻāĻĒāύāĻžāϰ āĻĨāĻžāĻŽā§āĻŦ āĻĄā§āϰāĻžāĻāĻā§ āĻāĻāĻāĻŋ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻĢāĻžāĻāĻ˛Â āĻāĻāĻāĻŋ .gitconfig āĻĨāĻžāĻāĻŦā§ , āĻāĻŋāύā§āϤ⧠āĻĄā§āϰāĻžāĻāĻāĻāĻŋ āĻĒā§āϞāĻžāĻ āĻāύ āύāĻž āĻĨāĻžāĻāϞ⧠āĻāĻŋāĻā§ āĻāĻžāĻāĻĒāĻŋāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻāύ–āĻŽā§āĻŽāϰāĻŋ āĻā§āϝāĻžāĻļā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϏ⧠āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻŋ āĻĻā§āĻāϤ⧠āĻāĻŽāύ āĻšāĻŦā§ :
[credential]
helper = store --file /mnt/thumbdrive/.git-credentials
helper = cache --timeout 30000
āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻāĻŋāĻā§ āĻŦāĻŋāώā§:
āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āϏāĻŦ āĻāĻžāĻ āĻāϰā§? āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ–āĻšā§āϞā§āĻĒāĻžāϰ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāύā§āϝ āĻāĻŋāĻ–āĻāϰ āϰā§āĻ āĻāĻŽāĻžāύā§āĻĄ āĻšāϞ āĻāĻŋāĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ, āϝāĻž āĻāĻāĻāĻŋ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āύā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠stdin āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϰāĻ āĻāύāĻĒā§āĻ āύā§āϝāĻŧāĨ¤
Â
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋāϝāĻŧā§ āĻŦā§āĻāĻž āϏāĻšāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϧāϰāĻž āϝāĻžāĻ āϝ⧠āĻāĻāĻāĻŋ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ helper āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāĻŦāĻ helper mygithost āĻāϰ āĻāύā§āϝ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĻā§āĨ¤ āĻāĻāĻžāύ⧠āĻāĻāĻāĻŋ āϏā§āĻļāύ āϰāϝāĻŧā§āĻā§ āϝāĻž âfillâ āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝā§āĻāĻŋ āĻĄāĻžāĻāĻž(call) āĻšāϝāĻŧ āϝāĻāύ āĻāĻŋāĻ āĻāĻāĻāĻŋ āĻšā§āϏā§āĻā§āϰ āĻāύā§āϝ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āϏāύā§āϧāĻžāύ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§:
$ git credential fill (1)
protocol=https (2)
host=mygithost
(3)
protocol=https (4)
host=mygithost
username=bob
password=s3cre7
$ git credential fill (5)
protocol=https
host=unknownhost
Username for 'https://unknownhost': bob
Password for 'https://bob@unknownhost':
protocol=https
host=unknownhost
username=bob
password=s3cre7
- āĻāĻāĻŋ āĻāĻŽāĻžāύā§āĻĄ āϞāĻžāĻāύ āϝāĻž āĻāύā§āĻāĻžāϰā§āĻāĻļāύ āĻļā§āϰ⧠āĻāϰā§āĨ¤
Â
- Git-credential āϤāĻžāϰāĻĒāϰ stdin āĻ āĻāύāĻĒā§āĻā§āϰ āĻāύā§āϝ āĻ āĻĒā§āĻā§āώāĻž āĻāϰāĻā§āĨ¤ āĻāĻŽāϰāĻž āĻāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāύāĻž āĻāĻŋāύāĻŋāϏāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŋ: āĻĒā§āϰā§āĻā§āĻāϞ āĻāĻŦāĻ āĻšā§āϏā§āĻāύāĻžāĻŽāĨ¤
Â
- āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻāĻž āϞāĻžāĻāύ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϝ⧠āĻāύāĻĒā§āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻšāϝāĻŧā§āĻā§, āĻāĻŦāĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāϤā§āϤāϰ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āϝāĻž āĻāĻāĻŋ āĻāĻžāύā§āĨ¤
Â
- Git-credential āϤāĻžāϰāĻĒāϰ āĻāĻžāϰ āĻā§āϰāĻšāĻŖ āĻāϰā§, āĻāĻŦāĻ āĻāĻāĻŋ āĻĒāĻžāĻāϝāĻŧāĻž āϤāĻĨā§āϝā§āϰ āĻŦāĻŋāĻāĻā§āϞāĻŋ āĻĻāĻŋāϝāĻŧā§ stdout-āĻ āϞā§āĻā§āĨ¤
Â
- āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āĻā§āĻāĻā§ āύāĻž āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āϞā§, āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ(username) āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ(password) āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāĻā§ āĻāύāĻā§āĻāĻŋāĻ stdout āĻ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ (āĻāĻāĻžāύ⧠āϤāĻžāϰāĻž āĻāĻāĻ āĻāύāϏā§āϞ⧠āϏāĻāϝā§āĻā§āϤ)āĨ¤
Â
āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏāĻŋāϏā§āĻā§āĻŽ āĻāϏāϞ⧠āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻāĻšā§āĻŦāĻžāύ āĻāϰāĻā§ āϝāĻž āĻāĻŋāĻ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž; āĻā§āύāĻāĻŋ āĻāĻŦāĻ āĻāĻŋāĻāĻžāĻŦā§ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠credential.helper āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽāĻžāύā§āϰ āĻāĻĒāϰāĨ¤ āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĢāϰā§āĻŽ āύāĻŋāϤ⧠āĻĒāĻžāϰā§:
Configuration Value | Behavior |
foo | Runs git-credential-foo |
foo -a –opt=bcd | Runs git-credential-foo -a –opt=bcd |
/absolute/path/foo -xyz | Runs /absolute/path/foo -xyz |
!f() { echo “password=s3cre7”; }; f | Code after ! evaluated in shell |
āϏā§āϤāϰāĻžāĻ āĻāĻĒāϰ⧠āĻŦāϰā§āĻŖāĻŋāĻ¤Â helper āĻĻā§āϰ āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώ⧠git-credential-cache, git-credential-store āĻāϤā§āϝāĻžāĻĻāĻŋ āύāĻžāĻŽ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻŽāϰāĻž āϤāĻžāĻĻā§āϰ āĻāĻŽāĻžāύā§āĻĄ–āϞāĻžāĻāύ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āύāĻŋāϤ⧠āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāϰ āĻāύā§āϝ āϏāĻžāϧāĻžāϰāĻŖ āĻĢāϰā§āĻŽ āĻšāϞ “git-credential-foo [args] <action>āĨ¤” stdin/stdout āĻĒā§āϰā§āĻā§āĻāϞ git-credential āĻāϰ āĻŽāϤāĻ, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž āĻāĻžāĻā§āĻ°Â āĻāĻāĻāĻŋ āϏāĻžāĻŽāĻžāύā§āϝ āĻāĻŋāύā§āύ āϏā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§:
Â
- get āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ(User) āύāĻžāĻŽ/āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻā§āĻĄāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ requestāĨ¤
Â
- store āĻšāϞ āĻāĻ helperâs āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻāϰ āĻāĻāĻāĻŋ āϏā§āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ requestāĨ¤
Â
- erase āĻĒā§āϰāĻĻāϤā§āϤ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻ helper āĻŽā§āĻŽāϰāĻŋ āĻĨā§āĻā§ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āĻāύā§āϝāĨ¤
Â
āϏā§āĻā§āϰ āĻāĻŦāĻ āĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āĻā§āϰāĻŋāϝāĻŧāĻžāĻā§āϞāĻŋāϰ āĻāύā§āϝ, āĻā§āύāĻ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ (āĻāĻŋāĻ āĻāĻāĻŋāĻā§ āĻāĻĒā§āĻā§āώāĻž āĻāϰā§)āĨ¤ āĻā§āĻ āĻ ā§āϝāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ, āϝāĻžāĻāĻšā§āĻ, āϏāĻžāĻšāĻžāϝā§āϝāĻāĻžāϰā§āϰ āĻāĻĨāĻžāϝāĻŧ āĻāĻŋāĻ āĻā§āĻŦāĻ āĻāĻā§āϰāĻšā§āĨ¤ āϝāĻĻāĻŋ āϏāĻžāĻšāĻžāϝā§āϝāĻāĻžāϰ⧠āĻĻāϰāĻāĻžāϰ⧠āĻāĻŋāĻā§ āύāĻž āĻāĻžāύā§, āϤāĻŦā§ āĻāĻāĻŋ āĻā§āύ āĻāĻāĻāĻĒā§āĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĒā§āϰāϏā§āĻĨāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻžāύā§, āϤāĻŦā§ āĻāĻāĻŋ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āϤāĻĨā§āϝā§āϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻĻāϤā§āϤ āϤāĻĨā§āϝāĻā§ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧā§ āϤā§āϞāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻāĻĒā§āĻāĻā§ āĻ ā§āϝāĻžāϏāĻžāĻāύāĻŽā§āύā§āĻ āϏā§āĻā§āĻāĻŽā§āύā§āĻā§āϰ āĻāĻāĻāĻŋ āϏāĻŋāϰāĻŋāĻā§āϰ āĻŽāϤ⧠āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧ; āĻĒā§āϰāĻĻāϤā§āϤ āĻāĻŋāĻā§ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦā§ āϝāĻž āĻāĻŋāĻ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻžāύā§āĨ¤
Â
āĻāĻāĻžāύ⧠āĻāĻĒāϰ⧠āĻĨā§āĻā§ āĻāĻāĻ āĻāĻĻāĻžāĻšāϰāĻŖ, āĻāĻŋāύā§āϤ⧠āĻāĻŋāĻ–āĻĒā§āϰāĻŽāĻžāĻŖāĻĒāϤā§āϰ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž āĻāĻŦāĻ āϏāϰāĻžāϏāϰāĻŋ āĻāĻŋāĻ–āĻā§āϰā§āĻĄā§āύāĻļāĻŋāϝāĻŧāĻžāϞ–āϏā§āĻā§āϰ⧠āϝāĻžāĻāϝāĻŧāĻž:
$ git credential-store --file ~/git.store store (1)
protocol=https
host=mygithost
username=bob
password=s3cre7
$ git credential-store --file ~/git.store get (2)
protocol=https
host=mygithost
username=bob (3)
password=s3cre7
- āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻāĻŋāĻā§ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ git-credential-store āĻā§ āĻŦāϞāĻŋ: https://mygithost āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ(username) āύāĻžāĻŽ âbobâ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ âs3cre7â āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
Â
- āĻāĻāύ āĻāĻŽāϰāĻž āϏā§āĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞāĻā§āϞāĻŋ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻŦāĨ¤ āĻāĻŽāϰāĻž āϏāĻāϝā§āĻā§āϰ āĻ āĻāĻļāĻā§āϞāĻŋ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻŋ āϝāĻž āĻāĻŽāϰāĻž āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻāĻžāύāĻŋ (https://mygithost), āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāϞāĻŋ āϞāĻžāĻāύāĨ¤
Â
- git-credential-store āĻāĻŽāĻžāĻĻā§āϰ āĻāĻĒāϰ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻš āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧāĨ¤
Â
~/git.store āĻĢāĻžāĻāϞāĻāĻŋ āĻĻā§āĻāϤ⧠āĻā§āĻŽāύ āϤāĻž āĻāĻāĻžāύā§:
https://bob:s3cre7@mygithost
Â
āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϞāĻžāĻāύā§āϰ āĻāĻāĻāĻŋ āϏāĻŋāϰāĻŋāĻ, āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋāϤ⧠āĻāĻāĻāĻŋ credential-decorated URL āϰāϝāĻŧā§āĻā§āĨ¤ osxkeychain āĻāĻŦāĻ wincred helper āϰāĻž āϤāĻžāĻĻā§āϰ āĻŦā§āϝāĻžāĻāĻŋāĻ āϏā§āĻā§āϰā§āϰ āύā§āĻāĻŋāĻ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻāύ āĻā§āϝāĻžāĻļā§ āϤāĻžāϰ āύāĻŋāĻāϏā§āĻŦ āĻāύ–āĻŽā§āĻŽāϰāĻŋ āĻĢāϰā§āĻŽā§āϝāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āϝāĻž āĻ āύā§āϝ āĻā§āύ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻž)āĨ¤
-
āĻāĻžāϏā§āĻāĻŽ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻā§āϝāĻžāĻļ:
git-credential-store āĻāĻŦāĻ friends āĻāĻŋāĻ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ, āĻāĻāĻŋ āĻŦā§āĻāĻž āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§ āύāϝāĻŧ āϝā§, āϝā§āĻā§āύāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ helper āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ Git āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻĻāϤā§āϤ helperâāϰāĻž āĻ āύā§āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻžāϰ āĻāϰā§, āĻāĻŋāύā§āϤ⧠āϏāĻŦ āĻā§āώā§āϤā§āϰ⧠āύāϝāĻŧāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āϏā§āĻŦāϰā§āĻĒ, āϧāϰāĻž āϝāĻžāĻ āĻāĻĒāύāĻžāϰ āĻāĻŋāĻŽā§āϰ āĻāĻŋāĻā§ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻĒā§āϰ⧠āĻĻāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϏāĻŽā§āĻāĻŦāϤ āĻĄā§āĻĒā§āϞā§āĻŽā§āύā§āĻ āĻāϰ āĻāύā§āϝāĨ¤ āĻāĻā§āϞāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻž āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ, āϤāĻŦā§ āĻāĻĒāύāĻŋ āϏā§āĻā§āϞāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻā§āϰā§āĻĄā§āύāĻļāĻŋā§āĻžāϞ āĻāϰ āĻāĻžā§āĻāĻžā§ āϰāĻžāĻāϤ⧠āĻāĻžāύ āύāĻž, āĻāĻžāϰāĻŖ āϏā§āĻā§āϞāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ⧎ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻā§āύ⧠helper āĻ āĻāĻāĻŋ āĻāĻāĻžāϰ āĻāϰ⧠āύāĻž; āĻĻā§āĻāĻž āϝāĻžāĻ āĻāĻŽāĻžāĻĻā§āϰ āύāĻŋāĻā§āĻĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāϰāϤ⧠āĻā§ āϞāĻžāĻāĻŦā§āĨ¤ āĻāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽā§āϰ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻĨāĻžāĻāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ:- āĻāĻŽāĻžāĻĻā§āϰ āĻŽāύā§āϝā§āĻ āĻĻāĻŋāϤ⧠āĻšāĻŦā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ get; store āĻāĻŦāĻ erase write āĻ āĻĒāĻžāϰā§āĻļāύ āĻ, āϤāĻžāĻ āϏā§āĻā§āϞāĻŋ āĻĒā§ā§ā§ āĻā§āϞ⧠āĻāĻŽāϰāĻž āĻĒāϰāĻŋāώā§āĻāĻžāϰāĻāĻžāĻŦā§ āĻŦā§āϰ(exit) āĻšā§ā§ āϝāĻžāĻŦ āĨ¤
- Shared-credential āĻĢāĻžāĻāϞā§āϰ āĻĢāĻžāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāĻāĻāĻŋ git-credential-store āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ āĻāĻāĻ āϰāĻāĻŽāĨ¤
- āϏā§āĻ āĻĢāĻžāĻāϞā§āϰ location āĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻŽāĻžāύāϏāĻŽā§āĻŽāϤ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻŋāϤ āĻāĻāĻāĻžāϰāĻā§(User) āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻĒāĻžāĻĨ āĻĒāĻžāϏ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻžāĨ¤
#!/usr/bin/env ruby
require 'optparse'
path = File.expand_path '~/.git-credentials' # (1)
OptionParser.new do |opts|
opts.banner = 'USAGE: git-credential-read-only [options] '
opts.on('-f', '--file PATH', 'Specify path for backing store') do |argpath|
path = File.expand_path argpath
end
end.parse!
exit(0) unless ARGV[0].downcase == 'get' # (2)
exit(0) unless File.exists? path
known = {} # (3)
while line = STDIN.gets
break if line.strip == ''
k,v = line.strip.split '=', 2
known[k] = v
end
File.readlines(path).each do |fileline| # (4)
prot,user,pass,host = fileline.scan(/^(.*?):\/\/(.*?):(.*?)@(.*)$/).first
if prot == known['protocol'] and host == known['host'] and user == known['username'] then
puts "protocol=#{prot}"
puts "host=#{host}"
puts "username=#{user}"
puts "password=#{pass}"
exit(0)
end
end
- āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻāĻŽāĻžāύā§āĻĄ–āϞāĻžāĻāύ(command-line) āĻ āĻĒāĻļāύ āĻĒāĻžāϰā§āϏ āĻāϰāĻŋ, āϝāĻž āĻāĻāĻāĻžāϰāĻā§(User) āĻāύāĻĒā§āĻ āĻĢāĻžāĻāϞāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤ āĻĄāĻŋāĻĢāϞā§āĻ(default) āĻšāϞ ~/.git-credentialsāĨ¤
Â
- āĻāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋ āϤāĻāύāĻ āϏāĻžāĻĄāĻŧāĻž āĻĻā§āϝāĻŧ āϝāĻĻāĻŋ get āĻ ā§āϝāĻžāĻāĻļāύ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻŦā§āϝāĻžāĻāĻŋāĻ–āϏā§āĻā§āϰ(backing-store) āĻĢāĻžāĻāϞāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāĻā§āĨ¤
Â
- āĻāĻ āϞā§āĻĒ stdin āĻĨā§āĻā§ āĻĒā§āϰāĻĨāĻŽ āĻĢāĻžāĻāĻāĻž(new line) āϞāĻžāĻāύ⧠āύāĻž āĻĒā§āĻāĻāĻžāύ⧠āĻĒāϰā§āϝāύā§āϤ āĻĒāĻĄāĻŧā§āĨ¤ āĻāύāĻĒā§āĻāĻā§āϞāĻŋ āĻĒāϰāĻŦāϰā§āϤ⧠āϰā§āĻĢāĻžāϰā§āύā§āϏā§āϰ āĻāύā§āϝ known āĻšā§āϝāĻžāĻļā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
Â
- āĻāĻ āϞā§āĻĒ āϏā§āĻā§āϰā§āĻ, āĻĢāĻžāĻāϞā§āϰ āĻāύā§āĻā§āύā§āĻ read āĻāϰ⧠āĻāĻŦāĻ āĻŽāĻŋāϞāĻžāύā§āϰ āĻā§āώā§āĻāĻž āĻāϰ⧠āĨ¤ âknownâ āĻĨā§āĻā§ āĻĒā§āϰā§āĻā§āĻāϞ, āĻšā§āϏā§āĻ āĻāĻŦāĻ username āϝāĻĻāĻŋ āĻāĻ āϞāĻžāĻāύā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āϝāĻžā§ , āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋ āĻĢāϞāĻžāĻĢāϞāĻā§āϞāĻŋāĻā§(results) stdout āĻ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋ āĻĨā§āĻā§ āĻŦā§āϰ(exit) āĻšā§ā§ āϝāĻžā§āĨ¤Â
Â
āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ helper āĻā§ git-credential-read-only āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻŦ, āĻāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āϰ PATH-āĻ āĻā§āĻĨāĻžāĻ āϰāĻžāĻāĻŦ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻā§āĻŦāϞ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻŦāĨ¤ āĻāĻāĻāĻŋ āĻāύā§āĻāĻžāϰā§āĻā§āĻāĻŋāĻ āϏā§āĻļāύ āĻĻā§āĻāϤ⧠āĻā§āĻŽāύ āϤāĻž āĻāĻāĻžāύ⧠āĻĻā§āĻā§āĻž āĻšāϞ :
$ git credential-read-only --file=/mnt/shared/creds get
protocol=https
host=mygithost
username=bob
protocol=https
host=mygithost
username=bob
password=s3cre7
āϝā§āĻšā§āϤ⧠āĻāĻāĻŋāϰ āύāĻžāĻŽ “git-” āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻšāϝāĻŧ, āϤāĻžāĻ āĻāĻŽāϰāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŽāĻžāύā§āϰ āĻāύā§āϝ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ:
$ git config --global credential.helper 'read-only --file /mnt/shared/creds'
āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ, āĻāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ extend āĻāϰāĻž āĻŦā§āĻļ āϏāĻšāĻ, āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĻāϞā§āϰ āĻāύā§āϝ āĻāĻŋāĻā§ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤