Git은 내가 누를 때마다 사용자 이름을 묻습니다.


675

내가 repo git을 밀어 넣으려고 할 때마다 둘 다 묻습니다 username & password.

매번 비밀번호를 다시 입력하는 데 문제가 없지만 사용자 이름을 입력하는 데 문제가 있습니다. https저장소를 복제 하는 데 사용 합니다.

그래서 username각각에 대해 묻지 않도록 git을 어떻게 구성 할 수 있습니까 git push?

나는 리눅스에 익숙하지 않지만 Windows의 IIRC는 git push암호 만 요구합니다.



@ Wug : 그러나 암호를 저장하고 싶지 않습니다. 사용자 이름 만 저장하고 싶습니다.
RanRag

4
해당 지침을 따르고 비밀번호 줄을 생략하십시오.
Wug


- 초기 질문에 수퍼 유저에 대한 답변도있다 superuser.com/questions/847181/...
dk14

답변:


975

편집자 (의견 및 의견에서 제안한대로 @ dk14)

경고 : credential.helper store답변에서 사용 하는 경우 비밀번호는 ( "있는 그대로") 완전히 암호화되지 않은 상태로 저장됩니다 ~/.git-credentials. 특히 고용주가 보안 문제를 용인하지 않는 경우 아래 의견 섹션 또는 "링크 된"섹션의 답변을 참조하십시오.

수락되었지만 사용자 이름 만 생략하는 것에 대한 실제 OP의 질문에는 대답하지 않습니다 (암호 아님). 정확한 문제가있는 독자에게는 @grawity의 대답 이 도움이 될 것입니다.


원래 답변 (@Alexander Zhu 제공) :

다음 명령을 사용하여 자격 증명을 저장할 수 있습니다

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

또한 나는 당신이 읽을 것을 제안합니다
$ git help credentials


160
경고 :이 방법에는 보안이 없습니다. 비밀번호는 일반 텍스트로 저장됩니다.
Mark Lakata

13
여기에 보안을 달성하기 위해 더 나은 방법을 찾을 수 있습니다 - stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata-이 답변에서 명령을 실행 취소하는 방법을 알려주십시오. 실행 취소 한 후 안전한 방법을 사용하여 자격 증명을 저장합니다.
MasterJoe2

25
@ testerjoe2 trygit config --unset credential.helper
dk14

1
제한 시간을 설정하는 것을 잊지 마십시오. 기본값은 15 분입니다. 약 1 년 동안 값을 3 천만으로 설정하십시오. 발견 : stackoverflow.com/a/35942890/1579667
Benj

180

.git/config로컬 저장소 파일 에서이를 수행 할 수 있습니다 . 이 파일에는 'url'이라는 항목이있는 'remote'라는 섹션이 있습니다. 'url'엔트리는 당신이 이야기하는 저장소의 https 링크를 포함해야합니다.

호스트 'url'에 사용자 이름을 접두사 git로두면 더 이상 사용자 이름을 요구하지 않아야합니다. 예를 들면 다음과 같습니다.

url = https://username@repository-url.com

5
사용자 이름이나 비밀번호에 특수 문자를 사용하면 이스케이프해야합니다. 올바른 이스케이프 문자는 en.wikipedia.org/wiki/Percent-escape 를 참조하십시오 . 예를 들어 "인용없이"! @ # "은"% 21 % 40 % 23 "으로 바뀝니다. 아래의 "Daniel Lerch"답변 참조
nsof

1
같은 저장소에서 일하는 다른 사람들이 내 사용자 이름을 볼 수 있습니까?
CodyBugstein

17
OP의 질문에 대한 정답이어야합니다 (예 : "암호가 아닌 사용자 이름을 유지하는 방법"). 이 답변은 사용자 이름을 유지하는 올바른 방법 일뿐만 아니라 보안 위험을 피할 수 있습니다 git config credential.helper store.
RayLuo

나는이 답변에 감사하고 이런 식으로 시도했지만 여전히 나에게 묻습니다 (v 2.1.4)-name@gitlab.com과 name%40mailaddress.com@gitlab.com으로 remoteurl을 시도했습니다-항상 묻습니다.username for https://gitlab.com:
eli

1
나는 이것을 시도했고unable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger

118

Git 리포지토리를 통한 영구적 인증

신임 캐싱을 사용하려면 다음 명령을 실행하십시오.

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

캐싱 만료 도 지정해야합니다.

git config --global credential.helper "cache --timeout 7200"

자격 증명 캐싱을 활성화하면 7200 초 (2 시간) 동안 캐시됩니다 .


자격 증명 문서 읽기

$ git help credentials

시간 제한을 7200으로 설정했지만 테스트를 위해 시간을 5로 설정하려고 생각했습니다. 그래서 5로 설정했지만 30 초 후에 다시 푸시하려고했지만 사용자 이름이나 비밀번호를 묻지 않았습니다.
Buttle Butkus

자격 증명이 전 세계에 저장되지 않을 수 있습니다.
Jay Patel

보안과 관련하여 다음과 같은 문서를 참조 할 가치가 있습니다. "이 명령은 향후 Git 프로그램에서 사용하기 위해 메모리에 자격 증명을 캐시합니다. 저장된 자격 증명은 디스크를 건드리지 않으며 구성 가능한 시간 초과 후에 잊혀집니다." git-scm.com/docs/git-credential-cache
mloskot

2
하지 않 git config credntial.helper store~ / .git-자격 증명 파일에 일반 텍스트-자격 증명을 저장하기위한 responsable입니다 위험한 명령? 내 생각에 ... cache ...- 명령은 충분하다고 생각합니다 : git config --clogal credential.helper 'cache --timeout 7200'그것은 dir을 만듭니다 : ~/.git-credential-cachecache-file이 들어 있습니다. 따라서 "... store"-명령이 아닌이 명령을 실행하십시오.
eli

나를 위해 작동하지 않았다. 매번 암호를 요구하는
Ian Grainger

75

GitHub의이 기사에 설명 된대로 새 SSH 키를 추가하십시오 .

힘내는 여전히 사용자 이름 및 암호를 요청하는 경우, 변경 시도 https://github.com/git@github.com:원격 URL에서 :

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
이것이 정답이어야합니다! 자격 증명을 저장하는 것은 매우 안전하지 않습니다. SSH 키가 있으면 여기에 설명 된대로 올바른 URL이 없기 때문에 자격 증명을 요구하는 것입니다.
Alexis Wilke

2
또는 당신은 사용할 수 있습니다git config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness

1
git config remote.origin.url git@gitlab.com : adammajewski / ray-backward-iteration.git
Adam

1
고마워, 이것은 내가 찾고있는 대답입니다.
Yupeng Tang

50

내가 찾은 가장 쉬운 방법은 다음 명령을 사용하는 것입니다.

git config --global credential.https://github.com.username <your_username>

이것은 사이트별로 작동하며 전역 git 구성을 수정합니다.

변경 사항을 보려면 다음을 사용하십시오.

git config --global --edit

1
어떤 이유로 든 이것이 나를 위해 일한 유일한 방법이었습니다. 감사!
mathetes 2016 년

이 방법은 안전한가요? github 비밀번호는 로컬 컴퓨터에만 저장되며 github으로 푸시되지 않습니까?
Akin Hwan

왜 이것이 승인 된 답변이 아닌지 모르겠습니다. 명령이 완벽하게 작동하고 질문에만 완벽하게 응답합니다. 비밀번호가 아닌 사용자 이름 저장. 고마워 벤!
AmaelH

[git config --global credential.helper 'cache --timeout = 3600'] 다음과 같이 실행할 수도 있습니다. 비밀번호는 매시간 1 시간 씩 저장됩니다
obenda

31

ssh 대신 https를 사용하는 경우 .git/configuser701648의 설명 에 따라 "url"을 편집 할 수 있지만 원하는 경우 비밀번호도 추가 할 수 있습니다.

url = https://username:password@repository-url.com

1
@비밀번호에 포함 된 경우 어떻게 합니까? url = https://username:abc@123@repository-url.com나를 그 에러주고Could not resolve host: @123@git.com
라훌 Mankar에게

username부분은 무시하는 것, 경우 (예 : FOO에서 FOO.git에 관해서는) 서버 리디렉션.
Mikhail T.

22

Git 구성 파일에 다음과 같은 것을 넣어 특정 사이트의 모든 저장소에 대한 사용자 이름을 설정할 수 있습니다. " https://example.com "및 "me"를 실제 URL과 실제 사용자 이름 으로 변경하려고합니다 .

[credential "https://example.com"]
    username = me

(이것은 "git help credentials"에서 직접 가져온 것입니다)


16

복제 된 저장소를 변경하면 작동합니다.

git remote set-url origin git@github.com:gitusername/projectname.git

캐시 된 자격 증명을 사용하면 시간 초과 기간을 설정하면 성가신 일이 줄어 듭니다. Windows 자격 증명 도우미를 사용하는 경우 가장 쉬운 방법이어야합니다 (특히 SSH가 차단 된 경우).


이 질문은 구체적으로 요구하고있다 GitHub의에 대한 정답 (... (확실 왜을 downvoted있어되지 않음)입니다.
팀 그로 네 벨드

12

http 대신 SSH를 사용하고 있는지 확인하십시오. 답변을 확인하십시오 .


3
그러나 나는 http대학 ssh에서 sys-admin 부서에 의해 막혀 있기 때문에 사용해야 했습니다 .
RanRag

그렇다면이 링크 가 도움이 될 것입니다.
gkris

여기에 공식 GitHub 도움말 페이지가 있습니다. 나를 위해 일어난 일은 로그인하기 전에 내 자신의 저장소 중 하나를 복제했기 때문에 나를 인식하지 못하고 기본적으로 HTTPS로 설정되었습니다. help.github.com/articles/changing-a-remote-s-url
anon58192932

11

git config --global credential.helper 캐시


1
이것은 Linux에서 더 나은 대답입니다.
Larry

9

user701648의 답변 외에도 다음 명령을 사용하여 프로젝트 폴더 대신 홈 폴더 (모든 프로젝트의 전역)에 자격 증명을 저장할 수 있습니다.

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

git pull, git pull origin xxx, git 만 사용자 이름과 비밀번호를 묻습니다.

git config credential.helper store

효과가있다.


9

가장 쉬운 방법은 ~/.netrc다음 내용 으로 파일 을 만드는 것입니다 .

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(여기에 표시된대로 https://gist.github.com/ahoward/2885020 )

다음을 입력하여 아무도 비밀번호를 읽을 수 없도록이 파일에 대한 권한을 닫을 수도 있습니다.

chmod 600 ~/.netrc


4

사용자 이름을 입력하지 않아도 암호를 입력하라는 메시지가 표시되면 사용자 이름을 포함하여 저장소를 복제하면됩니다.

git clone user_name@example.gitrepo.com/my_repo.git

3
  1. $ git config credential.helper 상점

  2. $ git push / push https://github.com/xxx.git

  3. 그런 다음 사용자 이름과 비밀번호를 입력하십시오.

  4. 끝난

그것은 아니다 git push/push https://github.com/xxx.git그것이 있어야git push https://github.com/xxx.git
Mohsin

3

ssh+는 key authentication보다 신뢰할 수있는 방법입니다 https+credential.helper

다음과 같이 모든 리포지토리에 HTTPS 대신 SSH를 사용하도록 구성 할 수 있습니다.

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOf여기 에 문서화되어 있습니다 .


2

빠른 방법

dir 작업 중일 때 자식 URL을 얻으십시오.

git config remote.origin.url

그때 :

git config credential.helper store

git push "url of your git"

마지막으로 사용자 이름과 비밀번호를 묻습니다

끝난.


1

당신은 그냥 실행할 수 있습니다

git config --global credential.helper wincred

시스템에서 Windows 용 GIT를 설치하고 로그인 한 후


쿼리에서 리눅스 단어를 보지 못했습니다. 내 나쁜
cyperpunk

1

( Mac OS 만 해당 )

에 대한 윈도우리눅스 아래에 언급 Github에서의 문서 링크를 참조하시기 바랍니다.

Github 문서 : Documentation Link

Git에서 GitHub 비밀번호 캐싱

  • osxkeychain 자격 증명 도우미를 사용하려면 Git 1.7.10 이상이 필요합니다.

    Git 버전을 확인하려면 : git --version

  • 알아내는 도우미 osxkeychain 이미 설치되어 있습니다 :

    git credential-osxkeychain

    다음과 같은 응답을 받으면 이미 설치되어 Mac에서 사용할 준비가 된 것입니다.

    > Usage: git credential-osxkeychain <get|store|erase>

    위와 같이 응답이 없으면 다음 명령을 실행하여 설치할 수 있습니다.

    git credential-osxkeychain

  • git에게 git 자격 증명에 osxkeychain을 전역 적으로 사용하도록 지시하려면 다음을 수행하십시오.

    git config --global credential.helper osxkeychain

    자격 증명을 키 체인에 저장하기 전에 한 번 묻습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.