깃허브
(1) 개발자들의 SNS
stars
좋아요 누른 프로젝트 목록
많은 star를 받은 프로젝트는 개발자의 큰 경쟁력이 된다.
issue
버그 제보 및 앞으로 개발해야 할 것들을 명시하는 곳
(2) 원격 저장소 호스팅 서비스
원격 저장소?
컴퓨터 속에만 있는 저장(로컬 저장소)가 아닌,
인터넷 세상 어딘가(원격)에 있는 다른 컴퓨터 속의 저장소
- 깃허브가 관리하는 원격 저장소에 프로젝트를 업로드하면 백업이 용이해짐.
README.md
프로젝트 설명서
깃허브와 소스트리 연동하기
SSH (Secure Shell)
깃허브와 우리 컴퓨터가 안전하게 통신을 주고 받을 수 있는 방법
SSH 통신으로 깃허브와 통신하는 방법
![img](https://blog.kakaocdn.net/dn/kHeYw/btrRnuwSUHB/MN3Fw5KOn4f4LKuG5uz4K1/img.png)
- 두 개의 키(=암호. 무작위의 긴 문자열) 생성한다.
- 공개 키
- 개인 키
- 깃허브에게 공개 키를 넘긴다.
- 그러면 깃허브와 SSH 통신이 가능하다!
깃허브로 전달할 메시지를 개인 키를 이용해서 암호화하고(다른 사람들이 가로채도 읽지 못함), 깃허브는 공개 키로 우리가 보냈음을 식별할 수 있다.
깃허브와 소스트리 연동하기
SSH 통신을 위해 공개 키와 개인 키 생성하기
git bash 터미널에서 다음 명령어를 입력한다.
ssh-keygen
키를 어느 경로에 저장할 것인지 입력한다. (보통 기본 경로에 저장)
![img](https://blog.kakaocdn.net/dn/cml8E9/btrRnJ8nyYf/3pKdtKWVDL3vldVMeeqIB1/img.png)
SSH 통신하기 직전에 암호 설정(필요하면 입력, 아니면 그냥 엔터 입력)
![img](https://blog.kakaocdn.net/dn/bnf7ho/btrRopn0A9U/6mkg40zQ9KsNI7ptjN7mGK/img.png)
/c/Users/nno3o/.ssh/id_rsa 경로에 우리의 개인 키가 생성되었고,
/c/Users/nno3o/.ssh/id_rsa.pub 경로에 우리의 공개 키가 생성되었다.
![img](https://blog.kakaocdn.net/dn/eyfUFO/btrRozKS82l/ZTSt3klW9EKFdAkKrhxIJ0/img.png)
- **cat** : 특정 파일을 열어보는 리눅스 명령어
cat /c/Users/nno3o/.ssh/id_rsa.pub
이 무작위 문자열이 공개 키다. 이 값을 깃허브에게 전달해주면 이제 깃허브와 우리 컴퓨터가 안전하게 정보를 주고 받을 수 있다.
![img](https://blog.kakaocdn.net/dn/clZr0D/btrRnE7cZq1/5NEfrrJyw9kLC6uBYj2dE0/img.png)
깃허브에 공개 키 설정하기
깃허브 > settings > SSH and GPG keys > New SSH keys > 입력 후 Add SSH Key
![img](https://blog.kakaocdn.net/dn/bGOXF9/btrRnpCpXyb/EZ5qKmnku0k4tsvzBll0D0/img.png)
![img](https://blog.kakaocdn.net/dn/bp6ovu/btrRo3kDdZC/TIR97xMbBoPAOfFEQrPby0/img.png)
- Title : 이름 지정(ex. my windows laptop)
- Key : 공개 키를 복사하고 붙여넣기
![img](https://blog.kakaocdn.net/dn/bbgGM2/btrRqFDwgO0/pto8oVf3EZvKYhwq2ar7u1/img.png)
생성 완료!
소스트리 설정하기
도구 > 옵션 > SSH 클라이언트 설정 > SSH 클라이언트 : OpenSSH 설정 (경로 자동 설정됨) > 확인
![img](https://blog.kakaocdn.net/dn/bhWM1M/btrRnph9EsU/A5laGpyKsK3h9DnyFK6Do0/img.png)
그러면 SSH 연동 완료!
소스트리에 깃허브 계정 연결하기
Remote > 계정 추가
![img](https://blog.kakaocdn.net/dn/bfmUyL/btrRpooDpZN/x5IKfhXx1RmFFagV94OsKK/img.png)
- 호스팅 서비스 : **GitHub** 설정
- 선호 프로토콜 : **SSH**
- **OAuth 토큰 새로고침** 클릭 > **Authorize atlassian**
![img](https://blog.kakaocdn.net/dn/bwgMs0/btrRnwajwaW/WgYY5kBJ4SJuVSQnPJ9JwK/img.png)
연결 완료!
원격 저장소와의 네 가지 상호 작용
- 클론(clone) : 원격 저장소를 복제하기
- 푸시(push) : 원격 저장소에 밀어넣기
- 패치(fetch) : 원격 저장소를 일단 가져만 오기
- 풀(pull) : 원격 저장소를 가져와서 합치기
(1) clone: 원격 저장소 복제하기
![img](https://blog.kakaocdn.net/dn/biYhTI/btrRnEsDFzY/3bCkjzXv1PZ0V2NeL7KpS0/img.png)
소스트리로 해보기
내 레포지토리 클론하기
![img](https://blog.kakaocdn.net/dn/bsLADZ/btrRoQyWJcr/KbfsHZtAcJxhXQUjN9wi01/img.png)
다른 레포지토리 클론하기
Code > SSH > 복사
- 소스트리는 깃허브와 SSH 통신을 하므로 SSH를 클릭해야 한다.
![img](https://blog.kakaocdn.net/dn/npqGB/btrRoPtVLLz/IRN0q13pZwmUfSilMk1n11/img.png)
Clone > 저장소 붙여넣기 > 클론
- 'Git 저장소 입니다' 라고 떠야 정상이다.
![img](https://blog.kakaocdn.net/dn/bMNTgL/btrRsH2xDYv/sV2UXUUjWKJr8xW7MCdS51/img.png)
- 히스토리까지 다 복제된다.
- .git 폴더까지 같이 복제된다.
![img](https://blog.kakaocdn.net/dn/bHwk7B/btrRrmLlIYz/DFVt0NxkpWxlNjWKnmYAq0/img.png)
원격 저장소 브랜치 이름
- **main 브랜치** == master 브랜치
- **origin** == 원격 저장소에 붙은 일종의 별명
- 설정 > 이름 / 경로
- 별명이기 때문에 다른 이름으로 변경할 수 있다.
- **origin/HEAD** == 원격 저장소 origin의 HEAD
- **origin/main** == 원격 저장소 origin의 main
원격 저장소에도 HEAD와 main이 있다.
현재 경우에는 main 브랜치 == origin/main == origin/HEAD 모두 같은 곳을 가리키고 있다.
![img](https://blog.kakaocdn.net/dn/o10ge/btrRoz5SGjH/wp5wiPgyShxDKFhw66K2i0/img.png)
(2) push: 원격 저장소에 밀어넣기
![img](https://blog.kakaocdn.net/dn/0x1DU/btrRqGDbbZv/Y8vUHXntICWThMcG93yR6K/img.png)
로컬 저장소의 변경사항을 원격 저장소에 반영한다.
소스트리로 해보기
우리가 소유한 레포지토리만 push할 수 있다.
- 레포지토리 생성
- 소스트리에 레포지토리 클론
- 파일 생성 및 커밋
Push
![img](https://blog.kakaocdn.net/dn/bj2TZL/btrRtzCIZZZ/JMMs8wnKykgJvirl4akDIK/img.png)
push 버튼 클릭
- master 브랜치에 push 하겠다는 의미
![img](https://blog.kakaocdn.net/dn/R4t92/btrRrmLjGaP/vT3ffjJE0qFuoKZoUvJskk/img.png)
레포지토리에 잘 반영되었다 (2 commits).
![img](https://blog.kakaocdn.net/dn/dJhL6C/btrRsINSiAE/aUWWYKqJI6kDkgd7kWKnLk/img.png)
이미 커밋한 것들을 원격 저장소에 연결하여 한꺼번에 올리려면?
설정 > 추가
![img](https://blog.kakaocdn.net/dn/AVmdG/btrRsJzgbFe/gWSrFgdYKSotcqzm3K4Wak/img.png)
값 입력 > 확인
- 원격 이름: 경로의 별명
- URL/경로 : 깃 SSH 복사한 것
![img](https://blog.kakaocdn.net/dn/lNSVS/btrRoQM8Jl0/rrHKr6wUsrvKasYUB5BJz0/img.png)
앞으로 경로는 origin이라는 이름으로 짧게 부를 수 있다(origin으로 상호작용 가능).
![img](https://blog.kakaocdn.net/dn/bI9YgK/btrRsVlYV2S/Z2lqg6o19SqbUrkxWex6A1/img.png)
(3) fetch: 원격 저장소를 일단 가져만 오기
![img](https://blog.kakaocdn.net/dn/T9Oeo/btrRsHBuwZc/oYXIRQqk87SE17hWcmsKwK/img.png)
나는 그대로인데 원격 저장소만 변경된 경우, 변경사항을 받아만 오고 내가 한 작업(로컬 저장소)에는 영향을 주지 않음
(상황)
![img](https://blog.kakaocdn.net/dn/ryjdx/btrRppV9TEL/3Dkb7KsMKyiGVPWvaeSVok/img.png)
소스트리로 해보기
위의 상황을 만든다. (깃에서 원격 저장소 내용 수정함)
![img](https://blog.kakaocdn.net/dn/up0zG/btrRpE6F3C4/7jkkzVyxLKpnkuYemQa7XK/img.png)
![img](https://blog.kakaocdn.net/dn/bRldDw/btrRsWFgHBC/lWQndMaAqJFlDffdtmtX5K/img.png)
소스트리에서 fetch 하기
fetch > 확인
![img](https://blog.kakaocdn.net/dn/KvHzI/btrRtxZjoak/BeIdYJETqmktrGawU4cLa1/img.png)
- master브랜치(로컬 저장소)
- origin/master브랜치에만 원격 저장소의 변경사항 가져옴
![img](https://blog.kakaocdn.net/dn/cwPvcs/btrRoyMIPZc/0klBWr2XKGUQmnuY57O3o1/img.png)
현재는 master브랜치에 있으므로 폴더 내에서는 "A B" 내용만 담고 있지만, 커밋 내용을 통해 origin/master의 변경사항을 볼 수 있다.
![img](https://blog.kakaocdn.net/dn/AIIr9/btrRsUHrx2Z/Y3pkw7YfyDw9oU6YzVXb7K/img.png)
origin/master브랜치보다 master브랜치가 한 단계 더 뒤쳐진 상태임
변경 사항을 master 브랜치에 가져오려면 pull을 해서 병합하면 된다.
![img](https://blog.kakaocdn.net/dn/Rgh14/btrRpZpn7Ru/WpCU0KUA8imR8gKPKaOFTk/img.png)
병합 완료
![img](https://blog.kakaocdn.net/dn/bwqm5P/btrRssSdy67/17gsDYmf0IzY9M1k0iI2Hk/img.png)
(4) pull: 원격 저장소를 가져와서 합치기
원격 저장소로부터 변경 사항을 갖고 오고 내 로컬 저장소에 바로 적용함
![img](https://blog.kakaocdn.net/dn/Y8Gnd/btrRtyw8N2S/UxdqRkKoUlIjHVTAtebzIK/img.png)
소스트리로 해보기
깃으로 파일 내용을 변경하고 커밋한 후, 소스트리에서 pull해보자.
Pull > Pull 버튼 클릭
![img](https://blog.kakaocdn.net/dn/bfJ8Wr/btrRs7Nv0v3/9NHfKkDsmncn2mBGutjUjk/img.png)
변경 사항이 내 로컬 저장소에 바로 합쳐진다.
![img](https://blog.kakaocdn.net/dn/znSbH/btrRtHnekV4/o3mOkJcwKLqQ94O4vZWppK/img.png)
'Github' 카테고리의 다른 글
07_명령어로 깃 다루기 (0) | 2022.11.17 |
---|---|
06_02_깃허브로 협업하기: Pull Request (0) | 2022.11.17 |
05_브랜치로 나누어 관리하기 (0) | 2022.11.16 |
04_버전 가지고 놀기 (0) | 2022.11.16 |
03_버전이 쌓여 사용자에게 선보이기까지: 커밋해시, 태그 (0) | 2022.11.15 |