Git 기본상식 (2)

jmboy713·2023년 4월 14일
0

Road to Git master

목록 보기
2/7
  • HEAD는 현재 체크아웃된 커밋을 가리킵니다. 다시 말하자면 현재 작업중인 커밋 입니다!.
  • HEAD는 항상 작업트리의 가장 최근 커밋을 가르킵니다.작업트리에 변화를 주는 git 명령어들은 대부분 HEAD를 변경하는것으로 시작합니다.
git checkout C2 ; c2 커밋으로 HEAD를 옮긴다. 
git checkout main; main 브랜치로 HEAD를 옮긴다. 

  • 기본적으로는 HEAD는 실행중인 브랜치에 숨어있습니다.

상대참조 (^) (~num)

  • Git에서 여기저기 이동할때 Commit의 해시를 이용해서 옮깁니다.
    - git log를 사용해서 해시를 확인하고 옮겨야 하는데 힘듭니다!
  • 상대참조는 우리가 기억할만한 지점 ( 브랜치 혹은 HEAD) 에서 출발해서 다른 지점에 도달해서 작업을 할 수 있습니다.
    - 한번에 한 커밋 위로 움직이는 ^
    - 한번에 여러 커밋 위로 올라가는 ~num
// ^ 상대참조
git checkout main^ ; main의 부모로 HEAD를 옮긴다.
git checkout main^^ ; main의 부모의 부모로 HEAD를 옮긴다.

//~ 상대참조
git checkout HEAD~4 ; HEAD 4칸 위로 올라간다. 

->git checkout main^

  • 브랜치 강제로 옮기기??
    - 상대참조를 이용하는 일반적인 방법은 브랜치를 옮길때 입니다.
    • -f 옵션을 이용해 브랜치를 특정 커밋에 직접적으로 재지정 할 수 있습니다.
git branch -f main HEAD~3 ; main branch를 HEAD의 3번째 부모에 갖다 놓겠다. 

Git에서 작업 되돌리기

  • Git에는 작업한것을 되돌리는 여러가지 방법이 있습니다.
  1. git reset
    a. git reset은 브랜치로 하여금 예전의 커밋을 가리키도록 이동시키는 방식으로 변경내용을 되돌립니다. "히스토리를 고쳐쓴다"라고 말할 수 있습니다.
    - 브랜치를 아예 이전 커밋으로 돌린다고 생각합시다!
  2. git revert
    a. 각자 컴퓨터에서 작업하는 로컬 브랜치의 경우 리셋을 잘 쓸 수 있지만, 다른사람이 작업하는 리모트 브랜치에는 쓸 수 없습니다.
    b. 변경분을 되돌리고 이 되돌린 내용을 다른사람과 공유하기 위해선 git revert를 써야합니다.

  • 되돌리려고 했던 C2의 아래에 새로운 커밋이 생겼습니다.
    - 이 커밋에 C2 커밋 내용의 반대되는 내용이 생겨난겁니다.
  • revert를 하면 다른사람들에게도 변경내역을 push할 수 있습니다.
//reset
git reset main ; HEAD가 있는 commit은 버리고 main branch로 reset하겠다.
git reset c1 ; c1 commit으로 reset 하겠다.

//revert
git revert pushed ; pushed의 변경내역을 지우는 commit을 HEAD 밑에 만들겠다.
profile
Python을 활용한 프로그래밍을 하고있습니다! 데이터분석, 인공지능, Django에 관한 정보를 업로드할 예정입니다. 잘부탁드립니다!!

0개의 댓글