2월 11일에는 챕터 4인 <둘 이상의 원격저장소로 협업하기>를 학습했다. 직전 글에서 언급했던 문제를 해결했다. 다만 day2 이후로 폴더들을 전부 삭제하고 다시 복습했기 때문에 폴더명이 조금씩 다르다.
교재 실습하기
📌남의 저장소를 내 계정에 통째로 복제하기 (Fork)
❗실습을 위해 GitHub 계정을 하나 더 만들었다. 기존 계정 : yeonjae02, 새 계정 : chlduswo
❗새 계정으로 로그인한 상태에서 기존의 레포지토리를 찾아 Fork 버튼 클릭

❗소스트리에서 새로운 탭을 열어 클론을 클릭해서 새 계정의 원격저장소 주소를 넣는다.

❗소스트리를 새 계정으로 로그인한 후 기본계정으로 설정한다.


❗커밋 페이지 하단의 계정이 새롭게 추가한 계정이 아니라면 사람 아이콘 클릭 후 대체 작성자 정보 사용에서 새 계정 정보를 넣는다.

❗push한다. -> ⚠️문제 발생⚠️

✅ 소스트리에서 push 오류 해결법
https://github.com/Cat-Hanbit/README/issues/3
[질문][오류] 맥에서 GitHub push할때 permission 관련 오류가 발생합니다. · Issue #3 · Cat-Hanbit/README
본문의 위치 4장 1절, 142페이지 마지막 단락 이슈유형: 오류 제보 및 질문 실습 환경: osx 카탈리나, SourceTree 사용 세부 내용 처음 너구리 계정을 생성하고 커밋을 한 것 까지는 잘 돼었는데, push를
github.com
내 환경은 맥은 아니지만 교재 Q&A에서 같은 문제를 찾았고 방법1을 사용했을 때는 되지 않았다. 그래서 방법1대로 원격 기능을 이용해서 클론한 상태에서 방법2대로 원격저장소 주소를 편집했다. 아래 그림처럼 수정한 후 확인을 누르고 Push하니 성공했다.

📌 원본저장소에 풀 리퀘스트 보내기
❗새 계정으로 로그인하면 풀 리퀘스트를 보낼 수 있다.

❗화살표 방향을 확인하고, 보내기 전에 변경 파일 정보를 반드시 확인한다. 설명을 적어 초록 버튼을 누르고 풀 리퀘스트 승인과 병합을 기다린다.

❗기존 계정으로 로그인해 풀 리퀘스트를 확인한다.


❗코드 리뷰 후 승인한다.




📌 묵은 커밋을 새 커밋으로 이력 조작하기 (rebase)
풀 리퀘스트를 보냈는데 코드 충돌이 난 경우, 내 브랜치로 먼저 병합하고 충돌을 해결한 후 다시 풀 리퀘스트를 보낼 수 있다. 하지만 충돌을 해결하느라 생긴 병합 커밋이 생기기에 변경한 부분만 풀 리퀘스트를 보낼 수 있는 방법이 rebase이다.
❗raccoon 폴더에서의 파일 수정 (새 계정에서 파일 수정)



❗원본저장소에만 있는 커밋을 로컬저장소에 가져오기



❗충돌 상황을 만들기 위해 기존 계정으로 같은 부분 수정하기





❗새 계정으로 풀 리퀘스트 보내기

❗여러 원격저장소 히스토리를 한 눈에 보기 : 리모트 추가 (Add remote)










❗ 묵은 커밋을 방금 한 커밋처럼 : 리베이스(Rebase)














배운 내용 정리
⭐브랜치
- 하나의 원본저장소에서 분기를 나눈다.
- 하나의 원본저장소에서 코드 커밋 이력을 편하게 볼 수 있다.
- 다수의 사용자가 다수의 브랜치를 만들면 관리하기 힘들다.
⭐포크
- 여러 원격저장소를 만들어 분기를 나눈다.
- 원본저장소에 영향을 미치지 않으므로 원격저장소에서 마음껏 코드를 수정할 수 있다.
- 원본저장소의 이력을 보려면 따로 주소를 추가해야 한다.
- 포크한 시점 이후에는 원본저장소가 어떻게 변했는지 모른다. (원본저장소와 포크한 원격저장소는 주소까지 바뀐 서로 다른 원격저장소이다.)
⭐ 풀 리퀘스트
- 포크한 저장소에서 원본저장소로 풀 리퀘스트를 보내는 것이 성공하면 원본저장소로 페이지가 저장소가 자동으로 이동한다.
- 풀 리퀘스트는 모두 원본저장소에 쌓이기 때문에 자연스러운 현상이다.
⭐ 패치 (Fetch)
- 패치는 새로고침 기능으로, 원본저장소 이력을 업데이트한다.
- 소스트리는 10분 간격으로 자동 패치가 된다.
⭐ 리베이스 (Rebase)
- 커밋의 베이스를 떼서 다른 곳으로 붙이는 것
- 이력을 조작하는 것으로, 충돌이 발생하면 고친다.
- 이력을 조작하고 푸시할 때는 강제 푸시해야 한다.
'독학 > [책] git, github' 카테고리의 다른 글
[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY6 (0) | 2023.02.17 |
---|---|
[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY5 (0) | 2023.02.14 |
[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY4 (0) | 2023.02.12 |
[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY2 (2) | 2023.02.06 |
[Git/GitHub🐱] 팀 개발을 위한 Git, GitHub 시작하기 DAY1 (2) | 2023.02.06 |