관리자 글쓰기
local repository를 github에 연동
2022. 11. 11. 14:30 - pingu-s

깃허브로 할 수 있는 일?

 

  • 원격 저장소에서 깃을 사용할 수 있다.
  • 지역 저장소를 백업할 수 있다.
  • 협업 프로젝트에 사용할 수 있다.
  • 자신의 개발 이력을 남길 수 있다.
  • 다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에 참여할 수도 있다.

 

HTTPS로 접속하는 주소는 다음과 같다.

https://github.com/아이디/저장소명

https://github.com/jongin-s/test-1

 

원격 저장소에 연결하기

 

$ git remote add origin https://github.com/jongin-s/test-1.git

 

이 명령은 원격 저장소(remote)에 origin을 추가(add)하겠다고 알려주는 것이다. 깃에서 기본 브랜치를 master라고 하는 것처럼 기본 원격 저장소에는 origin이라는 이름을 사용한다.

$ git remote -v

 

원격 저장소에 제대로 연결됐는지 확인할 수 있다.

 

원격 저장소에 파일 올리기 - git push

 

$ git branch -M main
$ git push -u origin main

 

push를 처음 하면 github에 login을 해야 하는데 username에는 profile-name(이메일 주소 X), password에는 token을 입력해야 한다.

↓token 발급 방법

더보기

1. 계정 Settings으로 들어간다.

 2. 설정 창을 밑으로 내리면 메뉴바에 'Developer settings'이 있는데 클릭하고 'Personal access tokens', 'Tokens (classic)' 순으로 클릭한다.

3. 'Generate new token' 클릭 후 'Generate new token (classic)'을 클릭한다.

4. Note와 Expiration을 설정하고 repo에 체크한 뒤, 'Generate token'을 클릭한다.

 

발급된 토큰을 복사해 password에 넣으면 인증이 완료된다. 이 토큰은 한 번밖에 못 보므로 반드시 백업을 해야 한다.

 

지역 저장소의 브랜치와 origin의 main 브랜치를 연결했다면 다시 파일을 푸시할 때는 git push라고만 입력하면 된다.

 

$ git push

원격 저장소에 파일 내리기 - git pull

 

$ git pull origin main

 

원격 저장소의 소스를 지역 저장소로 가져오는 것을 '풀(pull)한다'라고 한다. 위 명령은 origin(원격 저장소)의 내용을 main 브랜치로 가져온다는 뜻이다. 여기서는 원격 저장소가 origin이고 지역 저장소의 기본 브랜치가 main이기 때문에 'git pull'만 입력해도 된다.

SSH 주소로 원격 저장소 연결하기

 

SSH는 Secure Shell의 줄임말로 보안이 강화된 안전한 방법으로 정보를 교환하는 방식이다. SSH에서는 기본적으로 프라이빗 키(Private Key)와 퍼블릭 키(Public Key)를 한 쌍으로 묶어서 컴퓨터를 인증한다. 퍼블릭 키는 말 그대로 외부로 공개되는 키이고, 프라이빗 키는 아무도 알 수 없게 사용자 컴퓨터에 저장되는 키이다. 사용자 컴퓨터에서 SSH 키 생성기를 실행하면 프라이빗 키와 퍼블릭 키가 만들어진다. 터미널 창에서 깃허브를 사용하다 보면 아이디와 비밀번호를 요구하는 경우가 많은데, SSH 접속 방법을 사용하면 자동 로그인 기능을 통해 이러한 번거로움을 줄일 수 있다.

 

SSH 키를 저장할 디렉터리 경로에서 

 

$ ssh-keygen

 

를 입력하고 엔터를 누르고 key 부분을 생략하려면 엔터를 두 번 눌러 넘기면 파일이 생성된다.

 

파일을 확인해보면 id_rsa 파일이 프라이빗 키이고, id_ras.pub 파일이 퍼블릭 키이다.

 

퍼블릭 키를 복사해 깃허브 계정에 등록한다.

↓SSH Key 등록 방법

더보기

1. 계정 Settings으로 들어간다.

2. 메뉴바의 'SSH and GPK keys'를 클릭하고 'New SSH Key'를 클릭한다.

3. Title과 Key type을 설정하고 Key 부분에 복사한 퍼블릭 키를 붙여넣기 한다. 그리고' Add SSH Key'를 누르면 끝난다.

 

$ git remote add origin git@github.com:jongin-s/connect-ssh.git

 

SSH 주소를 사용해 원격 저장소에 연결하는 방법은 HTTPS 주소를 사용할 때와 같다. 지금은 SSH 주소를 넣는다.

git remote -v로 원격 저장소가 연결이 되었는지 확인할 수 있다.

 

원격 저장소 복제하기 - git clone

 

원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 한다. 원격 저장소를 지역 저장소로 똑같이 가져오는 것을 '복제한다'라고 하거나 '클론(clone)'또는 '클로닝(cloning)'이라고 한다.

원격 저장소의 주소를 복사해 git clone 뒤에 붙여넣기 한다. 주소 뒤에는 복제할 디렉터리 이름을 입력한다.

 

$ git clone https://github.com/jongin-s/test-1.git git_home

cf) 원격 저장소를 현재 디렉터리에 복제하려면 git_home 대신 마침표(.)를 입력하면 된다.

 

$ cd ~/git_office

 

위 명령은 cd ~ 명령과 cd git_office 명령을 한꺼번에 처리한 것이다.

 

지역 저장소에서 커밋 시 지역 저장소의 브랜치(main)와 원격 저장소의 브랜치(origin/main)가 가리키는 커밋이 다르며, git push와 git pull로 동기화를 해야 한다.

 

원격 브랜치 정보 가져오기 - git fetch

 

페치(fetch)는 '불러오다', '가져오다'라는 뜻이다. pull 명령이 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다면, 페치 명령은 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져온다.

 

$ git fetch

 

페치로 가져온 원격 저장소 정보는 origin/main 브랜치가 아닌 FETCH_HEAD라는 브랜치로 가져온다. 이 브랜치로 가져온 정보는 지역 저장소에 바로 반영되지 않는다.

 

페치해서 가져온 최신 커밋을 살펴보고 싶다면 FETCH_HEAD 브랜치로 체크아웃해서 확인한다.

 

$ git checkout FETCH_HEAD

cf) 지역 저장소의 최신 커밋과 페치한 커밋의 차이를 비교하려면 git diff HEAD origin/main을 입력한다.

 

페치한 후에 최신 커밋을 현재 브랜치에 합치려면 git pull 명령을 사용해서 원격 저장소의 소스를 내려받을 수도 있고, git merge 명령으로 FETCH_HEAD에 있던 커밋을 병합할 수도 있다.

 

$ git checkout main
$ git merge FETCH_HEAD

 

지금까지 살펴본 것처럼 git pull 명령은 git fetch 명령과 git merge FETCH_HEAD 명령 두 개를 합친 것과 같은 기능을 한다.

 

공동 작업 환경 구성하기

 

공동작업의 경우 저장소마다 다른 이름이나 메일 주소를 사용하기 위해 git config 명령을 사용할 때 --global 옵션을 빼고 이름과 메일 주소를 지정한다.

 

$ git config user.name "jongin"
$ git config user.email "ppj7515@gmail.com"

 

git checkout 명령에 -b 옵션을 사용하면 브랜치를 만들고 체크아웃하는 것을 한꺼번에 할 수 있다. 아래는 브랜치 f를 만들고 f로 체크아웃하는 예시이다.

 

$ git checkout -b f

cf) checkout -b f 명령을 실행했을 때 이미 f 브랜치가 있다면 f 브랜치로 체크아웃한다.

 

git push 뒤에 origin f를 추가하면 원격 저장소(origin)에 f 브랜치를 푸시한다는 의미이다.

 

$ git push origin f

 

Pull requests로 푸시한 브랜치 병합하기

 

f 브랜치에서 f1.txt 파일을 만들었지만 원격 저장소의 파일 목록에는 없다. 푸시한 브랜치는 풀 리퀘스트(pull request)를 통해 병합해야 원격 저장소에 반영되기 때문이다.

 

 

출처: 고경희, 이고잉. 2019. Do it! 지옥에서 온 문서관리자 깃&깃허브 입문. 이지스퍼블리싱

'개발 > 기타' 카테고리의 다른 글

git 명령어 정리2  (0) 2022.11.10
git 명령어 정리  (0) 2022.11.08