카테고리 없음

git_Branch Merge, conflict, pull requests (remote)

멍주다배 2024. 12. 24.

git_3 : local에서 branch, merge하는 방법

 

git_3

Branch Merge각 branch에서 작업한 후 커밋을 합치기 위해 merge 명령어 사용※ merge를 할 때, 서로 다른 커밋에서 동일한 파일을 수정한 경우 conflict 발생 -> 직접 수정해야 함※ main에서 branch를 합쳐야

minjung405.tistory.com

 

git_4: remote에서 branch, merge하는 방법

local과 remote는 자동으로 싱크해주는 거 없음
push: local  -> remote
pull: remote -> local

 

전체 흐름
git switch -c feature-A
add commit
git push -u origin feature-A: local의 feature-A를 remote로 연결하겠다 (초기 연결)
git switch main
git merge feature-A: main과 feature-A를 연결하겠다
git push: main에서도 branch의 커밋을 확인할 수 있음
 

feature-A branch를 remote로 push

  • (현재 위치: feature-A) git push

현재 branch가 upstream (remote branch)를 모른다. 현재 branch를 push 하려면 remote를 upstream으로 해줘야한다.

  • origin에 feature-A 브랜치를 만들면서 push하기
    • git push -u origin feature-A

github 화면에 branch가 보임

 

  • 현재 상태를 보면
    • local이 최신
    • => local의 변동사항이 remote 변경사항보다 앞에 있음
    • => local의 변동사항을 remote에 반영해줘야 함
    • => git push (remote와 local의 상황이 같아짐)

현재 상태

Shared Repository Model

동일한 repository를 공유하며 협업하는 방식

팀장: 레포 만들기, 팀원들한테 url 공유

✅팀원을 레포에 초대해야 수정(push) 권한이 생김 (public, private 같음)

초대 방법: Settings -> Collaborators-> 밑에 내려가면 manage access에 add people에 팀원 추가 (pending invite가 없어지면 완성)

 

팀원: 받은 url 각자 local에 clone하고 branch 만들기

 

팀장, 팀원 모두 각자 자신의 local에 branch 만들고 거기서 커밋 찍어가면서 개발

 

 

git push origin master : origin 저장소의 master 브랜치 위로 푸쉬

git pull origin master: origin 저장소의 master 브랜치 변경사항을 현재 내 local branch로 가져오기

어디서 가지고 올 지 이미 push할 때 설정을 해줬기 때문에 그냥 git pull 해도 됨

 

pull requests

⭐branch에서 개발을 다 끝내고 main에 merge 하려고 할 때, 바로 올리지 말고 팀원들한테 피드백 받은 후 올리기

  • github에서 제공하는 pr(pull requests)을 생성해서 검사받은 후 main에 합치기
  • github repo -> Pull requests -> New pull request 누르기
  • 어디서 어디로 merge 할 건지 선택

화살표 방향으로 merge 할거다

conflict 없는 경우

able to merge가 뜨면 자동적으로 merge가 가능한 상황 => 충돌이 없는 상황

  • create pull request
    • add a title 적기 (예 - feature b 기능 개발 완료함)
    • add a description 자세하게 적기 (예 - ~~ 개발했고, 테스트 방법은 ~, 결과는 ~, ...)
    • reviewers 지정
      • reviewers는 코드 확인 또는 코멘트 작성 가능
    • assignees 지정 (self 가능)
    • create pull request 누르기
  • merge pull request 누르고 confirm merge하면 merge 완료

mege가 완료되면 다른 팀원의 local은 최신 상태가 아니므로 git pull 필요

 

conflict 있는 경우

can't automatically merge로, 자동 merge 불가능한 상황 => 충돌을 해결한 후 create pull request 해주기

현재 local과 remote 상황 D1 때문에 conflict 발생

  • git switch main
  • git pull
  • git switch feature-A
  • git merge main (main을 feature-A로 불러오는 것이므로 main에 아무 영향 없음)
  • conflict 수정하고 git add commit push 하면 conflict 해결
  • create pull request 만들기