GitHub 협업

Fastforward Merge&3 Way Merg e / Branch / Rebase Merge / 협업
SHIN's avatar
Aug 27, 2024
GitHub 협업

1. FastForward Merge, 3 Way Merge(충돌 위험)

# add . 및 commit 한 로그 확인 $ git log
notion image
 
 
$ git reset
notion image
 
 
# 히스토리를 남기고 복사해서 붙여넣기 $ git revert
 
 
# 모든 history가 남아있음 (reset 한 거 까지 남아있음 -> 한번이라도 commit 하면 복구 가능) $ git reflog
notion image
 
 

2. Branch

# branch 확인 $ git branch # branch 생성 $ git branch "브랜치 명" # branch 생성과 이동을 동시에 $ git checkout -b "브랜치 명" # 강제 삭제 (브랜치 잘못 생성시) $ git branch -D "브랜치 명" # 원격 branch 삭제 (github) $ git push origin --delete "브랜치 명" # 해당 branch로 이동 $ git checkout "브랜치 명"
 
notion image
 
 
notion image
 
 

3. Rebase Merge

💡
재정렬 3way에서 따로 생긴 branch를 뒤에 붙힘
 
  1. a 생성 : init, add, commit
  1. b 생성 : init, add, commit
  1. git checkout -b topic
  1. d 생성 → topic 브랜치에 생성
  1. git checkout main → 다시 main 브랜치로 변경
  1. git commit -m “c” →
  1. git checkout topic →
  1. git rebase
💡
a - b - d - c 일 때 (main), topic으로 간 뒤, git rebase main 시 a - b - c - d (topic)
여기서,
git rebase -i HEAD~3 → b
INSERT I 누른 후 r, 해당 부분 편집 후 :wq
 

4. 협업

<팀장>
  1. 환경세팅.txt파일들 생성 - commit
      • 라이브러리 등록
      • 패키지 설정
      • util 설정
      • properties 설정
      • 기타 설정 (interceptor, 예외처리 등)
      1-1. git checkout -b dev (dev branch 생성)
  1. git repository 생성
  1. git push origin master, git checkout -b dev, git push origin dev
      • git remote add origin “repo 주소”
      • git checkout master → push
  1. repository 세팅
      • 콜라보 세팅 (초대)
      • master, dev(여기서 개발 - pull) → repo / setting / Branches / Add classic branch(구버전) / pattern에 master입력 / 그 밑에 권한중 Require a pull req 체크(merging1 = 팀원 중 1명이라도 승인하면 push 가능) / create → 같은 방식으로 dev rules도 생성
 
<팀원>
  1. dev pull (git pull origin)
  • git init / git remote add origin “주소” / git remote -v (repo 확인) / git checkout -b dev / git pull origin dev
  1. dev → branch → join-topic → 개발 진행 → topic에서 dev rebase(정렬) 이걸 올리면 fastforward → 코드 컨벤션에 어긋나는 부분등 체킹해서 다시 push 해달라는 요청만 하면 됨 (충돌 이슈x)
 
 

 
B기능
  1. git checkout -b b-topic
  1. b기능.txt
  1. 완료 후 git add . / git commit -m / 하고 대기-
A기능
  1. git checkout dev / git pull origin dev /
  1. 다시 본인 topic으로 이동 → git checkout a-topic
  1. git rebase dev (여기서 충돌이 나면 merge를 함) → dev에 누가 먼저 push 했을 수 있으니 먼저 pull 하기
  1. 개발 완료 후 git push origin a-topic
  1. PR 요청(합쳐도 되는지 요청) → repo상단 pull req / New pull req / dev ← a-topic / Merging is blocked(Reviewer에서 팀원 및 팀장 선택 후 PR 요청) / Create pull request /
  1. 팀장 → pull req에서 해당 PR 클릭 후 코드 체킹(files changed) / Review Change 클릭 후 Approve(승인) / Submit 하면 끝!
 
 
다시 B기능
  1. remote add origin / git pull origin dev(C기능까지 pull 완료) /
  1. git checkout b-topic / git rebase dev / git push origin b-topic /
 
 
본인 branch에서만 강제 push 및 reset 가능 (git push -f origin smj)

dev 동기화 후 topic 딸 것 !

 
💡
git checkout smj / git rebase dev / git add . commit -m 작성 후 / git log로 checking /
notion image
 
→ 여기서 smj | REBASE 일 경우 git rebase - - continue / git push origin smj 끝!
 
notion image
 
Share article

SHIN