티스토리 뷰
가정 --- 고양이 : 원본저장소만든 개발자, 너구리 : 고양이가 만든 프로젝트보고 기능 추가하고 싶은 개발자
평생세계를 만드는 branch, 평행우주를 만드는 fork
fork는 남의 저장소를 내 계정에 통째로 복제한다.
원하는 저장소를 검색으로 들어가고 오른쪽 위에 있는 fork버튼을 누르면 끝
이제 이걸 클론으로 가져오면 이전 개발자(고양이)가 만든 커밋 히스토리까지 다 보인다.
이제 수정을 하고 커밋을 하자.(대체 작성자 정보 사용으로--커밋 아이디를 살펴보자)
이제 원본저장소에 풀 리퀘스트를 보내자.(이전에 브랜치에서 했던 것과 동일)
원본저장소 주인(고양이)이 원본저장소의 insights 탭을 누르고 fork를 누르면 다른 사람이 포크했다는 것을 알 수 있다.
pull request탭을 보면 들어온 것을 확인.
Files changed탭을 누르고 review change 버튼을 누르면 다음 세가지 체크리스트가 나온다.
--comment : 댓글만 달기
--approve : 댓글을 달고 코드가 좋아 바로 병합
--request changes : 수정을 요청
approve누르고 merge pull request, confirm merge.
이러면 다른 개발자(너구리)도 원본저장소의 컨트리뷰터에 포함된다. (insights - contributors)
너구리가 고양이의 프로젝트를 fork해서 기능을 추가했는데 고양이는 이미 같은 파일을 수정해서 충돌이 발생했다. 이때 충돌이 발생한 이유는 고양이가 추가로 commit한지 몰랐기 때문이다. 이를 막기위해 sourcetree에서 저장소-원격 저장소 추가 를 들어가고 추가를 눌러 upstream을 추가한다.
('git remote add origin 원격저장소주소' 은 origin이라는 이름으로 원격저장소를 저장하라는 뜻이다.
그리고 upstream은 원본 저장소를 지칭하는 관용적 닉네임이다.)
이제 원격을 누르면 origin과 upstream이 나온다.
upstrea에서 오른쪽 버튼을 클릭하고 upstrea에서 가져오기를 선택 이것을 패치라고 한다.
패치는 이력만 가져오기 때문에 코드에는 영향이 없다. 풀과는 다름
묵은 커밋을 방금 한 커밋처럼 : 리베이스
이건 좀 심화.. 안해도 지장없음. 다른 개발자가 이 변경사항을 사용하면 하면안돼
풀 리퀘스트를 보냈을 때 충돌이 난다면 두가지 방법이 있다. 첫번째는 현재 커밋과 병합하고 싶은 커밋을 미리 내 브랜치에서 병합해서 병합 커밋을 만들고 이를 풀 리퀘스트로 보내는 방법이다.(이전에 함)
두번째 방법은 묵은 커밋을 방금 한 커밋처럼 이력을 조작하는 것이다. 이러면 조금 더 깔끔하다.
새로운 베이스로 삼고 싶은 커밋에 마우스오른쪽 버튼을 클릭하고 재배치를 클린한다.(리베이스)
이제 vscode에서 충돌을 해결. 스테이지에 올린다.
소스트리의 액션, 재배치 계속을 클릭해서 리베이스를 계속 진행.
리베이스 성공!! 그런데 히스토리에 origin/master는 아직도 옛날 커밋을 베이스로 하고 잇다.
이제 푸시를 해야한다.
도구 옵션에서 강제푸시사용가능과 안전한 강제 푸시 사용을 선택한다.
푸시를 누르고 강제푸시를 체크하고 푸시한다.
이제 풀리퀘스트를 보내면 된다.
'책 > 팀개발을 위한 git, github 시작하기' 카테고리의 다른 글
팀개발을 위한 git, github 시작하기6(브랜치 생성 및 조작하기) (0) | 2021.07.02 |
---|---|
팀개발을 위한 git, github 시작하기5(cli) (0) | 2021.06.29 |
팀개발을 위한 git, github 시작하기4(실무 사례와 함께 Git 다루기) (0) | 2021.06.29 |
팀개발을 위한 git, github 시작하기2(여러명 협업 branch, merge) (0) | 2021.06.27 |
팀개발을 위한 git, github 시작하기1(기본) (0) | 2021.06.25 |