카테고리 없음

Git - part 2 -1

코드몬스터 2022. 8. 15. 18:28
728x90

수정 중입니다.


👉 과거로 돌리는 방법

📌 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. 삭제하지 않고 특정 부분만 콕 집어서 되돌릴 수 있다.

 

👉 Branch(브랜치)

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

📌브랜치 생성

  • checkout 명령어가 switch, restore 역할 분리
# 브랜치 생성
git branch <브랜치명>

# 브랜치 목록 확인
git branch

# 브랜치 변경
git switch

# 브랜치 생성과 동시에 이동하기
git switch -c new-teams

# 브랜치 삭제하기
git branch -d <삭제할 브랜치명>

# 지우는 브랜치에 다른 브랜치로 적용되지 않은 내용의 커밋이 있을 시
git branch -D 옵션으로 강제 삭제

# 브랜치 이름 바꾸기
git branch -m <기존 브랜치명> <새 브랜치명

# 원격 저장소 브랜치 가져오기
git checkout -t origin/<브랜치명>

 

📌브랜치 합치는 방법

Merge

  • merge 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 라고 하며 사용할 수 있다.

 

👉 fetch vs pull

 

📌 git pull ?

원격저장소에 있는 프로젝트의 변경사항을 그대로 로컬저장소에 옮겨와 자동으로 병합
팀 단위로 사용하는 계정이 아닌 개인적으로 깃허브를 사용하는 사람들이라면 git pull 명령어를 가장 많이 사용할 것이다.
"변경 사항을 가져옴과 동시에 자동으로 병합이 되기 때문에 무엇이 추가되고 병합되었는지 확인이 안 됨"

 

📌 git fetch ?

원격저장소에 있는 프로젝트의 변경사항을 가져오기만 한 후 병합(merge)은 따로
깃 입문자 또는 깃허브를 개인적으로 사용하는 사람이라면 git fetch 명령어는 거의 사용하지 않을 것이다.
"다른 사람이 수정한 부분을 확인하고 병합할 수 있다는 장점이 있음"

 

[fetch 사용 방법]

  1. git fetch origin
    - 원격의 변화를 일단 merge 하지 않고 가져온다
    - 로컬 파일에 직접 추가 되지 않는다..!
  2. git checkout origin/main
    - 바뀐 내용이 로컬에 적용된다.(직접 적용되는 것은 아니다)
    - 따라서, 어떤 변화가 생겼는지 로컬 데이터를 바꾸지 않고 코드를 돌려볼 수 있다.
    - 문제가 있으면 되돌리면 된다.(git swtich main)
  3. git pull or git merge
    - 확인 결과, 괜찮으면 병합하면 된다.

 

 

# 차이점을 알려준다.
git diff <로컬 브랜치> <리모트 브랜치>

 

 

 

3. git clone ?

clone이라는 단어처럼 원격저장소의 내용을 새로운 폴더에 그대로 복사하는 것!