협업을 위한 Git 사용 방법


on branch main
$ git merge branchName
위치하고 있는 브랜치에 branchName의 변경사항을 위치하고 있는 브랜치에 병합
$ git pull //리포지스토리를 최신상태로 만들기 위해
$ git switch -c branchName //브랜치를 변경하여 작업하기 위해
- 예시를 위한 파일 생성
$ touch test.txt //파일 생성 $ vi test.txt //편집 $ :wq // wq는 저장 후 종료, q는 종료
$ git add test.txt //스테이징에 추가
$ git status //상태 확인
$ git commit //스테이징 상태에 있는 파일 커밋
$ git switch main //머지를 위해
$ git pull //머지 전 재차 최신화
$ git merge branchName //현재 위치하고 있는 브랜치에서 브랜치네임으로 머지
$ git switch branchName //브랜치네임으로 스위치
$ git push origin branchName //원격저장소에 있는 브랜치네임에 푸시(브랜치네임이 없다면 자동 생성)
Merge
$ git switch main
$ git merge branchName
충돌
<<<<<<< HEAD
// 내 커밋의 변경 내용
=======
// 다른 사람의 커밋의 변경 내용
>>>>>>> other_branch
충돌난 코드들을 해결한다.
git add <파일명> // 충돌 해결한 파일을 스테이징합니다.
git commit //충돌 해결을 커밋합니다.
git add <파일명> // 충돌 해결한 파일을 스테이징합니다.
git merge --continue // merge 작업이 완료됨
장점 : 충돌이 날 경우 한 번에 모두 해결 후 병합이 가능하다.
단점 : 브랜치가 많아질 경우 커밋 히스토리가 매우 복잡해지기 때문에 가독 및 추적이 불편하다.



$ git switch branchName // 개발한 브랜치로 이동
$ git rebase main // 베이스로 설정할 브랜치
충돌
<<<<<<< HEAD // 내 커밋의 변경 내용 ======= // 다른 사람의 커밋의 변경 내용 >>>>>> other_branch충돌난 코드들을 해결한다.
충돌 해결 후
$ git rebase --continue
장점 : 커밋 히스토리를 깔끔하게 유지할 수 있다.
단점 : 커밋 히스토리가 변경되기 때문에 신중해야하고, 원격 리포지스토리에 있는 브랜치에는 rebase 안하는 것을 강력 권장함 즉, 로컬 환경에서

rebase는 브랜치에서 커밋한 것이 rebase하게 되면 merge와 다르게 커밋이 master브랜치에 추가가 됨
on branch 'main'
$ git add .
$ git commit -m "commit message"
$ git switch feature/branchName
$ git merge main // or $ git rebase main
$ git push origin feature/branchName
main 브랜치에서 작업한 것을 commit 한 후 feature/branchName과 병합하여 새로 만든 브랜치로 원격저장소에 push할 수 있음. 잘못했을 경우 commit history를 깔끔하게 유지하게 하기 위해 rebase를 사용하는 것을 추천.
on branch main
git push origin main:master
$ git branch main master
main 브랜치를 master 브랜치로 이름이 바꿔짐 이후
$ git push origin master가능
$ git switch -c <local_branch_name> origin/<branch_name>
$ git fetch -p
git 원격저장소에는 없는 branch를 로컬 저장소에 남아있는 branch 제거
git pull
git fetch + git merge 간략화
git branch -d BranchName // 로컬 브랜치 제거