git 정리

qwerq123456·2021년 11월 18일
0

공부

목록 보기
2/5

Git 정리

매번 쓸때마다 대충 검색해서 이슈를 해결하기만 하고 내부에서 어떻게 굴러가는지, 어떤 기능이 있는지 잘 모르고 지냈던거 같다. 이번 기회에 자주 쓰는 애들 한번 쭉 정리 해보려 한다.

git 이전

git이 있기 전엔 서버 중심적인 버전 관리 툴을 사용했다고 한다. 그걸 알필요는 없는거 같으니 걍 깃만 알아보자

origin, remote의미

깃에 서버가 있고 그걸 remote라고 부른다. remote라는 말도 많이 쓰고 origin이라는 말도 쓰는데 그 차이를 한번 정리 해보려 한다.

  1. Origin
    • branch 리스트를 보면 branch_name 이라는 branch와 origin/branch_name이라는 branch가 있는것을 볼 수 있는데, 이는 origin이라는 원격 저장소의 branch_name branch와 로컬 저장소의 branch_name branch가 있는 것이다.
  2. Remote
    • 깃이 분산 버전 관리 시스템이라는 말을 들은적이 다들 있을것이다. 분산형이여도 하나의 중앙 서버를 두고 그로부터 파생되어야 하는데 그 서버를 remote라 부른다.

Clone

가장 먼저 가장 쉽게 쓰는 기능이다. clone은 remote와 로컬의 상태가 같도록 복사해 오는것이다.

merge, rebase

한 branch에서 다른 branch로 합치는 방법이다.

  • fast forward

    • merge와 rebase를 이야기 하기전에 먼저 알아야할 개념이다.
    • 병합할때 merge commit을 남기지 않고 병합 가능한 관계를 fast-forward관계라 한다.
  • merge

    • 흔히 생각하는 병합이다. 걍 무지성으로 merge할때는 이거면 다 된다 생각했다...ㅋㅋ
    • fast-forward가 불가능 한 경우 merge commit을 남겨서 병합해야한다.
  • rebase

    • 한 branch의 변경사항을 다른 branch에 적용하는것이다.
    • 말은 쉬워보이지만 conflict나 여러 이슈를 쳐내느니 걍 merge commit 하나 남기고 마는게 나을듯 하다.
    • git log는 겁나 깔끔하다고 한다.
    • 브랜치 구조가 좀더 복잡할때는 쓸 수밖에 없다 (밑에 예시를 보자)
      • master
        • A - c1 - c2
          • B - c3 - c4
            • C - c5 - c6
      • 위와 같이 구조가 잡혀있을때 B의 변경사항 없이 C를 A에 밀어 넣고 싶을때 rebase를 쓰면 아래와 같이 된다.
        • A - c1 - c2 - (c5 - c6)
          • B - c3 - c4

pull

그냥 풀은 풀이라 생각했는데 사실 풀 내부에선 두가지 단계로 나누어진다.

patch 하고 merge하면 pull한거나 똑같다

  • patch : remote의 수정사항을 내부로 가져옴
  • merge : 가져온걸 합침

stash

  • 내부의 stack에 로컬 변경사항을 쌓는것
    • 파일 단위로 다 컨트롤 할 수 있기 때문에 좋다.
  • conflict를 해결할 때 순서를 바꿔서 볼 수 있다.

checkout

branch 변경때 자주 쓰던 기능. 이거 말고도 다른 여러 기능이 있다. 한 파일에 대해서도 checkout 할 수 있구나

reset

  • commit 단위로 움직일 수 있음
  • soft : head가 이동하면서 수정사항들이 unstage 상태로 남음
  • hard : 변경사항을 걍 다 날림. 매번 쓸때마다 걍 hard옵션 주고 그랬는데 그러지 말아야 겠다고 생각했다 ㅋㅋ;;
profile
생각 날때마다 끄적이는 블로그

0개의 댓글