진짜 개발자
본문 바로가기

Software Engineering/DVCS(Git)

DVCS - git credential 관리 (최초 push시 credential을 입력하지 않아도 되도록하기)

728x90

최초 Git Push시 Credential을 입력하지 않도록 하기

스크린샷 2020-07-22 오후 5.13.34

최초 repository를 clone한 후, Git push를 할때, 위 그림과 같이 git은 authentication을 진행하도록 되어있습니다. (git clone은 public repo인 경우 아무나 수행할 수 있기 때문입니다.)



예약 push

개발을 하던 도중, push예약해야 하는 경우가 있었습니다.

예약을 통해 push를 하기 위해서, crontab 을 이용하기로 했었는데, 이때 clone후, credential을 입력해야 했기 때문에, shell을 이용해 자동화에 어려움이 있었습니다.

물론, clone을 한 뒤, push를 한번 수행하거나, 기존 개발을 진행하던 PC에서 crontab을 작성하면, credential을 작성하지 않아도 됩니다.

하지만, 개발 PC를 계속해서 켜놓을수가 없어서, AWS의 ec2를 이용해야 했습니다. 또한 EC2에서 단순히 git push를 예약하기 위해서, 의미 없고 신중하지 않은 commit을 push하기에는 무리라고 판단이 되었습니다.




해결방법

1. Clone과 동시에 Credential 정보를 저장

위와 같은 상황을 위해서, clone과 동시에 credential 정보를 저장하도록 하는 방법이 있습니다.

$ git clone https://<USERNAME>:<PASSWORD>@github.com/path/to/repo.git

위의 포맷을 이용해서, clone을 하면 됩니다.

스크린샷 2020-07-22 오후 5.34.10

우선, 앞서 알려드린 방식으로 clone을 진행합니다.

[ec2-user@ip-172-31-1-114 cron]$ touch text2.txt
[ec2-user@ip-172-31-1-114 cron]$ git add --all
[ec2-user@ip-172-31-1-114 cron]$ git commit -m "test2"

새로운 파일을 생성하고 commit을 합니다.

스크린샷 2020-07-22 오후 5.36.49

clone을 하는 경우, remote에는 자동으로 origin이라는 이름으로 repository가 지정됩니다. git push -u origin master 을 통해 push를 하면, 위 그림과 같이 별도의 credential을 요구하지 않고 push가 되는 것을 확인할 수 있습니다.



ID 와 Password에 특수문자가 존재하는 경우의 해결

 !   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24  %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

ID에는 @가 포함될수 있으며, 최근 강화된 보안으로 인해 Password에는 거의 대부분 특수문자가 포함되기 마련입니다. 이때는 위의 표를 이용해 작성하면 됩니다.

ex)
ID가 "a@gmail.com"인 경우
=> a%40gmail.com

PW이 "1234!@#"인 경우
=> 1234%21%40%23




2. Remote url 설정시 Credential 정보를 저장

새로운 프로젝트를 생성하고 이를 예약하는 경우에는, clone이 아닌 remote url 을 지정한 후, push를 진행하는데요, 이때 remote url을 설정할때 동시에 credential 정보를 저장할 수도 있습니다.

$ git remote add origin https://<USERNAME>:<PASSWORD>@github.com/path/to/repo.git

remote url 설정시 위의 방법으로 설정을 진행하면 됩니다.


'Software Engineering > DVCS(Git)' 카테고리의 다른 글

1. 버전 관리란? - 수정중  (0) 2018.10.06