GitHub
[GitHub] Git 인터렉티브 실습
simonpark817
2024. 5. 21. 22:49
[Git 인터렉티브 실습]
- 실제로 git bash 터미널에서 commit, branch, merge, rebase 등이 어떻게 사용되는지 실습을 통해 알아보도록 합시다.
- 각 실습 구간마다 캡쳐된 터미널 사진을 보고 어떤 명령어를 사용해야 하는지 순서대로 알아봅시다.
[브랜치 쓰기 실습]
- 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.
- git init (초기화, 저장소 생성)
- touch 0 && git add . && git commit -m "C0" (touch를 통해 0이라는 파일 생성 후 커밋, &&은 명령어를 연결하는 역할이기 때문에 굳이 쓰지 않고 나눠서 입력도 가능)
- touch 1 && git add . && git commit -m "C1" (touch를 통해 1이라는 파일 생성 후 커밋)
- git branch bugFix (bugFix 브랜치 생성)
- git branch bugFix2 (bugFix2 브랜치 생성)
- git branch bugFix3 (bugFix3 브랜치 생성)
- touch 2 && git add . && git commit -m "C2" (touch를 통해 2라는 파일 생성 후 커밋)
- touch 3 && git add . && git commit -m "C3" (touch를 통해 3이라는 파일 생성 후 커밋)
- touch 4 && git add . && git commit -m "C4" (touch를 통해 4라는 파일 생성 후 커밋)
- git checkout bugFix3 (bugFix3으로 HEAD 이동)
- touch 5 && git add . && git commit -m "C5" (touch를 통해 5라는 파일 생성 후 커밋)
- git log --oneline --graph --all (로그 보기)
[브랜치 합치기 (merge) 실습]
- 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.
- git init
- touch 0 && git add . && git commit -m "C0"
- touch 1 && git add. && git commit -m "C1"
- git checkout -b bugFix (bugFix 브랜치 생성과 동시에 바로 HEAD 이동)
- touch 2 && git add . && git commit -m "C2"
- git checkout main
- git merge main bugFix -m "C4" (main을 기준으로 bugFix와 병합 후 C4 메시지로 커밋)
- git log --oneline --graph --all
- git init
- touch 0 && git add . && git commit -m "C0"
- git checkout -b bugFix
- echo '안녕' > 1 && git add . && git commit -m "C1" (1이라는 파일 생성과 동시에 '안녕' 내용을 저장하고 커밋)
- cat 1 (파일 1의 내용 확인하기)
- git checkout main
- echo '잘가' > 1 && git add . && git commit -m "C2" (1이라는 파일의 내용을 '잘가' 로 수정하고 커밋)
- cat 1
- git merge bugFix (병합을 하게되면 1이라는 파일의 내용이 서로 달라 충돌이 발생 -> 병합 실패)
- echo '안녕잘가' > 1 (main에 있는 1이라는 파일의 내용을 '안녕잘가' 로 수정하면서 충돌 수습)
- git add . && git commit -m "C3, 병합"
- git log --oneline --graph --all
[브랜치 리베이스 (rebase) 실습]
- 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.
- git init
- touch 0 && git add . && git commit -m "C0"
- git checkout -b bugFix
- touch 1 && git add .&& git commit -m "C1"
- touch 2 && git add . && git commit -m "C2"
- touch 3 && git add . && git commit -m "C3"
- git checkout main
- touch 4 && git add . && git commit -m "C4"
- touch 5 && git add . && git commit -m "C5"
- touch 6 && git add . && git commit -m "C6"
- git rebase main bugFix (main을 기준으로 bugFix를 리베이스)
- git log --oneline --graph --all
- git init
- touch 0 && git add . && git commit -m "C0"
- git checkout -b bugFix
- echo 'bugFix1' > 1 && git add . && git commit -m "C1"
- echo 'bugFix2' > 2 && git add . && git commit -m "C2"
- echo 'bugFix3' > 3 && git add . && git commit -m "C3"
- git checkout main
- echo 'main1' > 1 && git add . && git commit -m "C4"
- echo 'main2' > 2 && git add . && git commit -m "C5"
- echo 'main3' > 3 && git add . && git commit -m "C6"
- git rebase main bugFix (1, 2, 3 파일의 각 내용들이 일치하기 않기 때문에 충돌 발생 -> 리베이스 실패)
- cat 1 (파일 1의 내용 확인)
- echo 'bugFix1 + main1' > 1 (파일 1 내용 수정함으로써 충돌 수습)
- git add .
- git rebase --continue (리베이스 계속 진행 후 C4 커밋 성공, vi편집기가 나타나면 저장을 의미하는 :wq 입력)
- cat 2
- echo 'bugFix2 + main2' > 2
- git add .
- git rebase --continue (리베이스 계속 진행 후 C5 커밋 성공)
- cat 3
- echo 'bugFix3 + main3' > 3
- git add .
- git rebase --continue (리베이스 계속 진행후 C6 커밋 성공)
- git log --oneline --graph --all
반응형