본문 바로가기

Git&GitHub

[Git&Github] branch, merge, conflict, fork, pull request

branch

problem : 한 줄로 커밋을 쌓으면 둘이 겹치지 않나요?

solved : 여러 줄로 쌓으면 된다.

-> branch(가지)

 

브랜치 만들기

cat 브랜치를 현재 시점에 만들어라 - git branch cat

cat 브랜치로 이동해라 - git checkout cat

 

cat 브랜치에 커밋을 추가하면?

master 브랜치는 아직 과거 커밋을, cat 브랜치는 새 커밋을 가리킴

 

 

merge

feat 브랜치에서 작업이 끝났다. 이제 master에 합치고 싶다.

master 브랜치의 최신 커밋에(base) oct 브랜치의 최신 커밋(compare)을 합치려고 한다

 

1. 먼저 base가 될 master 브랜치로 이동

2. compare 브랜치인 oct를 나와 합치고 싶다라고 명령 - git merge oct

3. 합쳐진 결과는 문어 A 커밋

문어 A는 고양4 + a니까 둘이 합친 결과물은 당연히 문어A.

그래서 oct랑 master 브랜치 모두 문어A를 가리킨다.

 

 

conflict

머지할 때 두 버전이 같은 곳을 수정했다면 이를 수동으로 고쳐줘야 한다.

 

 

fork

고양&문어가 Boxiting 오픈소스를 만들고 있다. 여기에 너구리가 숟가락을 얹고 싶어한다.

다만 Boxiting 저장소의 푸시 권한은 고양이와 문어만 가지고 있다. 

그렇다면 오픈소스에 기여를 하기 위해선 커밋 전에 반드시 컬래버레이터 등록을 부탁해야 할까?

 

fork(저장소를 통째로 복제) 기능을 사용하면 된다. 

 

pull request - 원본 저장소에 머지 요청을 보내는 것

포크한 저장소에서 기능 개발을 마쳤습니다.

이제 이 코드를 고양&문어의 원본 저장소에 머지해달라고 하고싶습니다.

너구리는 원본 저장소에 코드를 올릴 권한이 없는데 어떡하죠?

 

pull request 하는 방법

1. 머지하고 싶은 두 브랜치를 선택하고

2. 어떤 변경을 했는지 제목과 내용에 쓰면 됩니다.

3. 단일 저장소에서 보낼 수도 있고, 이렇게 포크한 저장소에서도 보낼 수 있습니다.

 

풀 리퀘스트로 머지 요청 보내기

1. 코드를 함께 작성하는 팀원이 있다면, 최대한 직접 머지하는건 피하고 모든 머지를 pr로 한다.

2. 동료가 내 pr을 보고 코드를 리뷰할 수 있다.

3. 동료의 pr에 수정이 필요하면 댓글을 달아 cr(change request)를 보낼 수 있다.

4. 오픈소스에 pr을 보낼때는 '기여 안내문서(contribution guidelin)'을 반드시 참고한다.