Git 사용법

EHminShoov2J·2024년 1월 27일
0

Git

목록 보기
3/3
post-thumbnail

1. 기본 개념

  • commit id : 커밋 내용, 저자 정보, 날짜 및 시간, 부모 및 커밋 정보로 생성됨

  • Head는 현재 버전을, main은 마지막 버전을 나타내며, 각각의 version은 이전(부모) version을 기억하고 있다.

    이때 추가적으로 Head는 branch를 가르킬 수도, commit id/version을 기억할 수도 있다.

  • detached Head : Head가 직접적으로 version을 가리키고 있는 상태

    만약 이 상태에서 지속적으로 commit을 하고, 추후에 main으로 check out하게 되면 이전의 version들은 그 누구도 기억하지 않는 상태가 된다.



    따라서 반드시 main으로 돌아올 때는 check out을 통해서 돌아오지 말고, main을 더블 클릭해서 돌아와야 한다. UI가 조금 헷깔리게 되어있는데 아래의 상태는 detached Head 상태이다

    아래와 같은 상태가 되어야 제대로 되고 있는 것이다. 잘 보면 테두리의 색이 다름

    추가적으로 문제가 발생하더라도, commit id만 기억해두면 해당 id로 check out 하여 복구 가능하고, detached head 상태에서도 branch를 만들고 merge해주면 문제를 해결할 수 있다.

  • reset : Head가 가르키는 branch를 변경해준다

    위의 그림과 같이 exp branch에 d를 추가하고 싶었다면 exp로 Head를 옮기고, exp를 d version으로 reset한뒤, 다시 main breanch로 check out, c version으로 reset 해주면 됨.

  • rebase : Head가 가리키고 있는 branch의 base를 선택한 branch로 재설정(rebase) 시켜준다.

    기본적으로 rebase, 새로운 base가 되는 branch가 먼저 기록이 남게 되고, 만약 충돌이 있다면

-cherry pick : 변경사항만을 가져오고 싶은 경우에 사용. 특정 변화만을 가져와서 사용할 수 있음

  • origine/main : remote tracking branch(rtb), 서버에 push되어 있는 버전을 확인할 수 있음

    아래와 같은 경우는 main과 origine/main이 일치되어 있는 상황을 의미한다.
  • push : 로컬 저장소의 내용을 원격 저장소에 전달하는 것
  • pull : fetch(원격 저장소의 내용을 로컬로 가져오는 것) + merge
  • reject : 충돌이 되지 않더라도, 로컬 저장소가 원격 저장소의 내용을 가지고 있지 않다면 발생한다.

0개의 댓글