Git & Github

[Git/GitHub] Merge, Conflict, Fork, Pull Request

진기명기 2023. 2. 5. 21:12

 

* Git을 다루는 명령어 : Merge, Conflict, Fork, Pull Request  ▼▼▼

 


① Merge

: 각각의 브랜치에서 작업이 완료된 후에 통합 브랜치(Main)에서 하나로 모아져 합치는 작업(브랜치 끼리합치는 작업)

: Local Repository 변경사항을 Working Directory 합치는 작업 ( merge에 해당)

 

* Sourcetree에서 Merge를 실행해 보자

ex) main 브랜치에 새로 작업한 feature2 기능을 합칠 경우

1) main 브랜치 check-out 되어 있는지 확인
2) feature2 브랜치 마우스 click - ‘Merge feature2 into main’ (= feature2 브랜치를 main 브랜치에 합침)
3) merge 실행 완료

 

※ 주의!) feature2 check-out 상태에서 main 브랜치를 우 클릭하여 실행할 경우,

feature2 브랜치에 main 브랜치를 합치는 것이 된다. 따라서 기준이 되는 브랜치를 정한 , merge 실행

+ a) merge 할 commit 시점을 가장 최근으로 필요 x, commit 할 선택해서 merge 하는 가능

 

4) Remote Repository에도 반영하기 위해 merge 인해 발생한 push 작업을 진행

 

 


② Conflict

: 같은 파일의 같은 소스코드 부분을 여러 브랜치에서 동시에 수정하고, main 되는 브랜치에 하나로 합칠 생기는 충돌

(따라서 Git 입장에서는 어떤 소스가 우선인지 판단 불가능)

 

* Sourcetree의 경우 Conflict가 됐을 때

1) ‘충돌 병합경고 알림을 줌 (user에게 충돌된 사항에 대해 해결 등의 선택지를 주는 것)

ex) 충돌이 일어난 index.html 파일에서 변경이 겹친 소스코드 부분을 main 브랜치 코드와 feature2 브랜치 코드 보여줌

 

2) 둘 하나를 선택 하거나, 코드를 융합해서 전부 지워버리고 새로 작성하는 방법 등을 통해 해결

3) 해결 후에 파일 클릭’ > ‘충돌 해결하기’ > ‘해결된 것으로 표시 경우, 자동으로 Stage에 해결된 파일이 업로드 > 후에 commit > push 정산 진행  

 

 


③ Fork

: 다른 사람이 갖고 있는 원격저장소를 GitHub 원격 저장소에 복제하는

 

* 언제 사용할까?

- 다른 사람의 오픈 소스를 나한테 맞춰 수정 보안, 추가 기능을 넣는 등의 상황에 사용

 

 


④ Pull Request

: 내가 무언가 수정을 했을 , 다른 사람에게 수정한 브랜치를 merge 해달라고 요청하는

 

* Pull Request는 댓글처럼 메시지 작성 가능

- 보통 pull 하기 전에 피드백을 주고 받을 있으며 어떤 부분을 수정했는지, 피드백 요청 부분 등을 정확하게 기입하는 것이 좋음