ecoEarth 2023. 1. 16. 03:23

깃허브와 소스트리 연동하기

SSH(Secure Shell)

  • 사용자측에서는 두개의 키를 생성한 후 상호작용하고자하는 대상에게 공개키를 전달하면 된다.

공개키

터미널에서 공개키를 생성하는 방법은 다음과 같다.

ssh-keygen

 

생성한 공개키는 경로를 적어준 후 확인할 수 있다.

inguk@JEONui-MacBookPro ~ % cat /Users/inguk/.ssh/id_rsa.pub
inguk@JEONui-MacBookPro ~ % cat /Users/inguk/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHxy1s0rNkGZojQdwlr8Fo
lli7iWbGQ4ydpOWibbMSmQq2cz3vFdTKYjDqjQHZ0UZ9NU5d3nrTaYWcZNiA
PBOfrMUSmLpEZfYTZaTvPAr8pZz/itHISQqd3i76PuGpFlwDbSdvk4J5qFBy
3t0eV496HjHNqslWQ1jsON3g2U/bwYvRwwWyNxzx1Nx2AbORr6JbBZP7rT12
H9xmxn/Vx9IlPVCrdI2/G6xpuvu80JlPKnUPwc8SP+Kx8KKQdInQC7D85DFx
UN/g5OY2JVObHTOEnFf97Z8OHIrPxvjMNYq5VVAgAguJxq80OkjdRfuzC0KK
vVF7r/j6RzOcct5K622NDXoJTZ0YaWAngmNtNLTstvTdV2eAjNUrPKcsXm7A
5JPJT+2XeKk2Yw9ngBxlJKQsCffjiKf040TaoMFtey/Po1NwohSTT31XeEVuo
B9DOPIp7y9du7eRzVSK0BZhfVuKETnYRt/53rcvpug0CLSk0+nF0nwYaDEJs7
3QqbxR+F0= inguk@JEONui-MacBookPro.local

이렇게 만든 공개키는 위에서 언급한 것과 같이 상호작용하고자 하는 대상 즉, 깃허브에게 전달해주면 된다.

  • SSH 키는 여러개 등록할 수 있다.

여러개의 키를 식별하기 위해 타이틀을 설정해주고, 위에서 생성하고 조회한 SSH키를 붙여넣기해주면 된다.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHxy1s0rNkGZojQdwlr8Fo
lli7iWbGQ4ydpOWibbMSmQq2cz3vFdTKYjDqjQHZ0UZ9NU5d3nrTaYWcZNiA
PBOfrMUSmLpEZfYTZaTvPAr8pZz/itHISQqd3i76PuGpFlwDbSdvk4J5qFBy
3t0eV496HjHNqslWQ1jsON3g2U/bwYvRwwWyNxzx1Nx2AbORr6JbBZP7rT12
H9xmxn/Vx9IlPVCrdI2/G6xpuvu80JlPKnUPwc8SP+Kx8KKQdInQC7D85DFx
UN/g5OY2JVObHTOEnFf97Z8OHIrPxvjMNYq5VVAgAguJxq80OkjdRfuzC0KK
vVF7r/j6RzOcct5K622NDXoJTZ0YaWAngmNtNLTstvTdV2eAjNUrPKcsXm7A
5JPJT+2XeKk2Yw9ngBxlJKQsCffjiKf040TaoMFtey/Po1NwohSTT31XeEVuo
B9DOPIp7y9du7eRzVSK0BZhfVuKETnYRt/53rcvpug0CLSk0+nF0nwYaDEJs7
3QqbxR+F0= inguk@JEONui-MacBookPro.local

소스트리와 깃허브 연결

  • 원격 탭으로 가서 전에 생성해둔 repository가 정상적으로 보이는지 확인해보자. 잘 보인다면 성공!

원격 저장소와의 네 가지 상호작용


클론(clone): 원격 저장소를 복제해오기

  • 목적지 경로와 이름은 소스트리에서 자동으로 생성해준다.

  • 저 경로가 매번 말하기 귀찮으니까 그냥 origin이란 별명으로 부르는 것이다.

푸시(push): 원격 저장소에 밀어넣기 - 일종의 업로드

  • 자신이 소유하고있지 않은 푸시는 불가능하다. 즉, 타인의 클론한 레파지토리에 푸시할수는 없다.

  • 정상적으로 원격 레파지토리에 추가된 것을 볼 수 있다!

 

로컬저장소에 이미 작업해둔 결과물을 깃허브에 추가하기

앞서 살펴본 "클론 -> 푸시"의 과정이 아닌 "작업 -> 푸시"의 과정을 살펴보자.

  • 작업해둔 결과물을 소트트리에서 로컬 저장소 추가
  • 설정 -> 원격 탭으로 이동한 후 '추가' 클릭
  • 깃허브에서 레파지토리를 새롭게 생성 후 SSH 복사해오기
  • 원격 이름을 origin으로 설정 후 복사한 SSH를 URL/경로에 붙여넣기하기


패치(fetch): 원격 저장소를 일단 가져만 오기

  • fetch는 다음과 같은 상황에서 사용할 수 있다.
    • 개발자A는 협업도중 개발자C의 작업물을 가져와 확인하고는 싶으나, 자신의 브랜치에는 영향을 주지 않고싶은 상황
    • fetch를 한다면 -> 로컬 저장소의 브랜치에는 영향을 주지는 않으나, 원격 저장소의 브랜치에는 업데이트가 되게 된다.


풀(pull): 원격 저장소를 가져와서 합치기

  • pull은 fetch와는 다르게 원격저장소의 변경물을 로컬저장소의 작업물과 병합한다.


풀 리퀘스트(pull request)

앞서 언급했듯이 자신의 소유가 아닌 파일을 클론해올수는 있을지언정 푸시는 할 수 없다. 

그렇다면 어떻게 자신의 작업물을 푸시할 수 있을까? 바로 자신의 변경사항을 푸시해달라고 요청하는 것이다.

 

pull request는 다음의 과정을 거친다.

  1. 기여하려는 저장소를 본인 계정으로 포크하기
    • 포크란 자신이 소유하고있지않은 원격저장소를 자신의 계정으로 복제하는 것을 의미한다.
    • 레파지토리가 자신의 소유가 아니라면 푸시할 수 없기때문에 일단 포크를 해온 후 작업하는 것이다.
    • 이러한 포크해온 작업물에서는 푸시가 가능하기때문
  2. 포크한 저장소를 클론하기
  3. 브랜치 생성 후 생성한 브랜치에서 변경사항 만들어내기
  4. 작업한 브랜치 푸시하기
    • 생성한 브랜치를 푸시합니다. 그러면 깃허브에 풀 리퀘스트 버튼이 생성됐죠.
  5. 풀 리퀘스트 보내기