git_3 : local에서 branch, merge하는 방법
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
- origin에 feature-A 브랜치를 만들면서 push하기
- git push -u origin feature-A
- 현재 상태를 보면
- 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 할 건지 선택
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 해주기
- 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 만들기