GitHub

[GitHub] Git 인터렉티브 실습

simonpark817 2024. 5. 21. 22:49

[Git 인터렉티브 실습]

  • 실제로 git bash 터미널에서 commit, branch, merge, rebase 등이 어떻게 사용되는지 실습을 통해 알아보도록 합시다.
  • 각 실습 구간마다 캡쳐된 터미널 사진을 보고 어떤 명령어를 사용해야 하는지 순서대로 알아봅시다. 

 

[브랜치 쓰기 실습]

  • 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.

branch 실습

  1. git init (초기화, 저장소 생성)
  2. touch 0 && git add . && git commit -m "C0" (touch를 통해 0이라는 파일 생성 후 커밋, &&은 명령어를 연결하는 역할이기 때문에 굳이 쓰지 않고 나눠서 입력도 가능)
  3. touch 1 && git add . && git commit -m "C1" (touch를 통해 1이라는 파일 생성 후 커밋)
  4. git branch bugFix (bugFix 브랜치 생성)
  5. git branch bugFix2 (bugFix2 브랜치 생성)
  6. git branch bugFix3 (bugFix3 브랜치 생성)
  7. touch 2 && git add . && git commit -m "C2" (touch를 통해 2라는 파일 생성 후 커밋)
  8. touch 3 && git add . && git commit -m "C3" (touch를 통해 3이라는 파일 생성 후 커밋)
  9. touch 4 && git add . && git commit -m "C4" (touch를 통해 4라는 파일 생성 후 커밋)
  10. git checkout bugFix3 (bugFix3으로 HEAD 이동)
  11. touch 5 && git add . && git commit -m "C5" (touch를 통해 5라는 파일 생성 후 커밋)
  12. git log --oneline --graph --all (로그 보기)

 

[브랜치 합치기 (merge) 실습]

  • 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.

merge 실습 1

  1. git init
  2. touch 0 && git add . && git commit -m "C0"
  3. touch 1 && git add. && git commit -m "C1"
  4. git checkout -b bugFix (bugFix 브랜치 생성과 동시에 바로 HEAD 이동)
  5. touch 2 && git add . && git commit -m "C2"
  6. git checkout main
  7. git merge main bugFix -m "C4" (main을 기준으로 bugFix와 병합 후 C4 메시지로 커밋)
  8. git log --oneline --graph --all

 

merge 십습 2

  1. git init
  2. touch 0 && git add . && git commit -m "C0"
  3. git checkout -b bugFix
  4. echo '안녕' > 1 && git add . && git commit -m "C1" (1이라는 파일 생성과 동시에 '안녕' 내용을 저장하고 커밋)
  5. cat 1 (파일 1의 내용 확인하기)
  6. git checkout main
  7. echo '잘가' > 1 && git add . && git commit -m "C2" (1이라는 파일의 내용을 '잘가' 로 수정하고 커밋)
  8. cat 1
  9. git merge bugFix (병합을 하게되면 1이라는 파일의 내용이 서로 달라 충돌이 발생 -> 병합 실패)
  10. echo '안녕잘가' > 1 (main에 있는 1이라는 파일의 내용을 '안녕잘가' 로 수정하면서 충돌 수습)
  11. git add . && git commit -m "C3, 병합"
  12. git log --oneline --graph --all

 

[브랜치 리베이스 (rebase) 실습]

  • 아래 사진과 같은 결과가 나오기 위해 명령어를 순서대로 입력해봅시다.

rebase 실습 1

  1. git init
  2. touch 0 && git add . && git commit -m "C0"
  3. git checkout -b bugFix
  4. touch 1 && git add .&& git commit -m "C1"
  5. touch 2 && git add . && git commit -m "C2"
  6. touch 3 && git add . && git commit -m "C3"
  7. git checkout main 
  8. touch 4 && git add . && git commit -m "C4"
  9. touch 5 && git add . && git commit -m "C5"
  10. touch 6 && git add . && git commit -m "C6"
  11. git rebase main bugFix (main을 기준으로 bugFix를 리베이스)
  12. git log --oneline --graph --all

 

rebase 실습 2

  1. git init
  2. touch 0 && git add . && git commit -m "C0"
  3. git checkout -b bugFix
  4. echo 'bugFix1' > 1 && git add . && git commit -m "C1"
  5. echo 'bugFix2' > 2 && git add . && git commit -m "C2"
  6. echo 'bugFix3' > 3 && git add . && git commit -m "C3"
  7. git checkout main
  8. echo 'main1' > 1 && git add . && git commit -m "C4"
  9. echo 'main2' > 2 && git add . && git commit -m "C5"
  10. echo 'main3' > 3 && git add . && git commit -m "C6"
  11. git rebase main bugFix (1, 2, 3 파일의 각 내용들이 일치하기 않기 때문에 충돌 발생 -> 리베이스 실패)
  12. cat 1 (파일 1의 내용 확인)
  13. echo 'bugFix1 + main1' > 1 (파일 1 내용 수정함으로써 충돌 수습)
  14. git add .
  15. git rebase --continue (리베이스 계속 진행 후 C4 커밋 성공, vi편집기가 나타나면 저장을 의미하는 :wq 입력)
  16. cat 2
  17. echo 'bugFix2 + main2' > 2
  18. git add .
  19. git rebase --continue (리베이스 계속 진행 후 C5 커밋 성공)
  20. cat 3
  21. echo 'bugFix3 + main3' > 3
  22. git add .
  23. git rebase --continue (리베이스 계속 진행후 C6 커밋 성공)
  24. git log --oneline --graph --all  

 

반응형