GIT : 10. Checkout and Branch

yeppi1802·2024년 6월 17일

❇️ 요약

  • Git Checkout
  • Git Branch
    • -r / -a
    • --delete
    • Branch간 이동

📖 Git Checkout

🔆 Git Checkout이란

  • 특정 버전으로 이동하기 위한 명령어
git checkout <commit_id>

🔆 Commit ID (HashCODE)

  • 앞의 7자리만 주어도 충분히 구분 가능

🔆 Git Checkout하면 벌어지는 일

  • 그 버전의 상태로 Working Directory가 변경
  • HEAD가 Checkout한 버전을 가리킴


📖 Git Branch

🔆 개발 하다보면 코드를 여러개로 복사해서 작업하는 경우가 종종 생김

  • 원래 코드와 상관없이 독립적으로 개발할 필요
  • 개발후, 원래 코드와 병합할 필요

🔆 Git Branch 란?

  • 원래 코드를 복사하여 독립적으로 개발할때 사용
  • 특정 버전에서 새로운 Branch를 만들어서 작업하다가 병합 가능
  • Repository를 생성하면 main branch가 기본으로 생성

🔆 참고. Remote + Local Branch 예시

  • Head : 현재 내가 있는 위치

🔆 Git Branch 목록보기

  • Local
git branch
  • Remote : -r 옵션
git branch -r
  • All : -a 옵션
git branch -a 

🔆 Git Branch 생성 - Local

  • 내가 현재 있는 시점에서 branch할 것이다
git branch <branch_name>

🔆 Git Branch 배포 - Remote

  • 서버에 배포 가능
git push origin <branch_name>

🔆 Git Branch 삭제

  • Local
git branch --delete <branch_name>
  • Remote
git push origin --delete <branch_name>
  • Remote에 배포하더라도 Local만 지워짐
  • Remote에서도 지워줘야 전부 지워짐

🔆 Git Branch 간 이동

git checkout <branch_name>


📖 Default Branch

설명 생략

  • Remote Repository 생성
  • 주소 + Token 복사
  • Local Repository로 Clone

☁️ Branch 정보를 확인해보면

  • git branch : Local Branch 목록 보여줌
  • * : 현재 HEAD가 여기를 가리키는 중
git branch

☁️ Remote Branch - -r, -a

git branch -r
git branch -a 

☁️ Git Log에서도 알 수 있다

git log


📖 Branch에서 놀아보기

☁️ 파일 생성하고 Commit

touch file1.py
git add file1.py
git commit -m "add file1"
ls
touch file2.py
git add file2.py
git commit -m "add file2"
ls

☁️ Branch 생성

  • Head는 현재 main을 가리킴
git branch dev
git branch

☁️ 로그 구경

git log
  • main과 dev 모두 마지막 버전을 가리킴
  • Head는 main을 가리킴

  • Remote는 해당 버전을 가리킴

☁️ dev Branch로 checkout

git checkout dev
git branch
  • Head가 dev 가리키는 중

☁️ dev branch에서 파일을 하나 더 생성하고 Commit

touch file3.py
git add file3.py
git commit -m "add  file3"
ls

☁️ Main Branch로 이동

git checkout main
ls
  • Main으로 돌아온 후 사라진 file3

☁️ Main Branch에서 파일 수정

cat > file1.py
print("hello, branch")

git commit -a -m "modify file1"

git status

☁️ Log 확인 - Main

  • Commit History가 달라졌기 때문에 Main에서 dev의 log는 안보인다
git log --oneline

☁️ Log 확인 - Dev

git checkout dev
git log --oneline

☁️ 현재 전체 Branch 목록 확인

git branch -a

☁️ dev Branch 배포

git push origin dev

☁️ dev Branch 배포 확인

git branch -a


📖 Branch를 만들고 지우기

☁️ dev2 Branch 생성

  • -b 옵션 : 좀더 간단하게 Branch 만들고 이동하는 옵션 ⭐⭐⭐
git checkout -b dev2
git branch

☁️ dev2 branch 배포

git push origin dev2
git branch -a 

☁️ dev2 Branch 삭제 -Error

  • Head가 가리키는 Branch에서 해당 Branch는 못지운다.
git branch --delete dev2

  • 최초의 상태에서 merge가 안됐기 때문에 --delete로 삭제 불가, -D로 삭제 가능
    • 가이드를 참고하여 원래 하려던 동작 수행 가능
git checkout main
git branch --delete dev2

☁️ dev2 Branch 삭제

  • 보통 Branch는 잘 삭제 X, 하더라도 작업 후 필요없으면 함
  • 만들자마자 삭제하는 -D 는 참고만!
git branch -D dev2
git branch

☁️ dev2 Branch 삭제 - Remote

  • Local에서 지웠으니 Remote도 지우자!
git push origin --delete dev2
git branch -a

0개의 댓글