Computer Science/Version Control System

Git - part 3

코드몬스터 2022. 8. 17. 22:07
728x90
본 내용은 인프런의 제대로 파는 Git & GitHub - by 얄코  및 Codeit 으로 공부한 내용을 복붙 및 정리했습니다.

수정중입니다.


👉 Branch(브랜치)

  • 프로젝트를 하나 이상의 모습으로 관리해야 할 때
    • 예) 실배포용, 테스트서버용, 새로운 시도용
  • 여러 작업들이 각각 독립되어 진행될 때
    • 예) 신기능1, 신기능2, 코드개선, 긴급수정 등
    • 각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합
  • checkout 명령어가 switch, restore 역할 분리되었습니다.

📌 브랜치 명령어

  • 브랜치 생성
    • git branch < 브랜치명>
  • 브랜치 삭제
    • git branch -d <브랜치명>
  • 브랜치 목록 확인(로컬저장소만)
    • git branch
  • 브랜치 목록 확인(원격저장소 포함)
    • git branch -all
  • 원격 저장소 브랜치 가져오기
    • git checkout -t origin/<브랜치명>
  • 로컬 저장소 브랜치를 원격 저장소추가
    • git push -u origin <브랜치명>
  • 원격 브랜치 삭제
    • git push <원격이름> --delete <원격의 브랜치명>

 

📌 브랜치 합치는 방법

 

Merge

  • 브랜치를 main 으로 합치는 경우
  •  reset 으로 되돌리기 가능
# main 브랜치로 이동
git merge <브랜치명>
ex) git merge add-coach
merge 적용한 이후
  • 병합된 브랜치는 삭제
# 사용이 끝났기 때문에 제거
git branch -d <브랜치명>

 

📌rebase
팀원들끼리 이미 공유된 커밋들에 대해서 rebase 를 사용하지 않는 것이 좋다.

# merge 와 반대로 앞에 붙이는 브랜치를 메인으로 사용
git rebase main

# main branch는 여전히 이전 위치에 존재하고 있기 때문에 이동시켜야한다.
# main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward
# main 브랜치로 이동
git merge new-teamse
 

📌브랜치 충돌 해결

# merge를 중단하고 되돌리기
git merge --abort

만약 출동 해결이 어려운 경우

git merge --abort
git rebase --continue

👉 HEAD

  • 특정 브랜치의 최신 커밋 위치를 나타내고 있다.
  • 현재 HEAD 위치 앞 뒤로 이동
  • ^ 또는 ~ : 개수만큼 이전으로 이동
# check out
git checkout HEAD^^^ : 세 칸 뒤로 가겠다.
git checkout HEAD~~ : 두 칸 뒤로 가겠다.
git checkout - : 컨트롤 + z 와 같은 느낌으로 한 단계 되돌려준다.
HEAD 위치 예시
  • HEAD는 아직 이름이 안 지어진 브랜치 이다.

 

[git hash]

  • commit 값?? 대신 옆에 빨간 박스의 값을 hash 라고 하며 사용할 수 있다.

 

👉 과거로 돌리는 방법

📌 Reset VS Revert

 

[Reset]

  • git reset --hard “<해쉬>"
      1. 말 그대로 시간을 과거로 돌리는 방법
      2. 과거로 돌아간 다음 History 에서 삭제 된다.(이후 시점의 기록들이 삭제 된다.)
  • git reset --soft
    • repository 에서 staging area 로 이동
  1. git reset --mixed
    1. repository 에서 working directory 로 이동 

 

[Revert]

  1. 한 번 공유가 된 commit 들은 revert 를 이용해서 되돌려야 한다.
  2. 삭제하지 않고 특정 부분만 콕 집어서 되돌릴 수 있다.

 

 

'Computer Science > Version Control System' 카테고리의 다른 글

Discard / Update branch  (0) 2024.01.17
Git - part 5  (0) 2022.07.15
Git - part 4  (0) 2022.07.04
Git - part 2  (0) 2022.07.04
Git - part 1  (0) 2022.07.04