ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • git 기본 사용법
    프로그래밍/git 2021. 8. 29. 05:26

    1. rebase

    기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것.

    리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다.

    리베이스를 쓰면 저장소의 커밋 로그와 이력이 깨끗해짐

    git rebase main

    현재 HEAD가 있는 위치를 원하는 커밋(브랜치)로 복사해서 넣는다.

    2. HEAD와 브랜치 분리하기

    git checkout [커밋해시] 를 하면 분리가 된다고함.

    나는 처음에 git checkout [브랜치이름] 으로 했을 때 브랜치가 가리키는 마지막 커밋이랑 뭐가 다른건지 헷갈렸다.

    [브랜치이름]으로 한 경우랑 브랜치가 가리키는 커밋으로 했을 때랑 달랐다.

    브랜치이름 = 어떤 커밋을 가리키는 포인터 라고 이해하면 될 것 같다.

    왼쪽은 HEAD와 master 분리 전, 오른쪽은 분리 후

    git init
    git touch test1.txt
    git add .
    git commit -m "first file add"
    git touch test2.txt
    git add .
    git commit -m "test2 file add"
    git log >> 여기서 master의 해시값을 본다
    git checkout [해시값]

     

    3. 특정 브랜치를 특정 커밋으로 이동하기

    git branch -f [옮길브랜치이름] HEAD~[HEAD에서 이동시킬 상대적 거리]

     

    4. 작업 되돌리기

    Git에는 작업한 것을 되돌리는 여러가지 방법이 있음.

    변경내역을 되돌리는 것도 커밋과 마찬가지로 낮은 수준의 일(개별 파일이나 묶음을 스테이징 하는 것)과 높은 수준의 일(실제 변경이 복구되는 방법)이 있음. 여기서는 후자의 방법에 대해서 알아봄

    되돌리는 방법 2가지 방법이 있음.  (git reset, git revert)

    1. git reset

    브랜치가 예전의 커밋을 가리키도록 이동시키는 방법으로 변경 내용을 되돌리는 방법.

    히스토리를 고쳐쓴다 라고도 하고 애초에 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 옮기는 것임.

    git reset HEAD~1

    2. git revert

    reset의 히스토리를 고쳐쓴다는 점 떄문에 다른 사람이 작업하는 리모트 브랜치에는 쓸 수 없다고 함.

    revert는 변경분을 되돌리고 되돌린 내용까지 커밋되는 셈이다.

    git revert HEAD

     

    3. cherry-pick

    git cherry-pick <Commit1> <Commit2> <...> 

    HEAD에 커밋들을 복사해 떨어트림.

    현재 위치(HEAD) 아래에 있는 일련의 커밋들에 대한 복사본을 만들겠다는 것을 줄인 말임.

    예를들어 위 사진에서 main으로 복사하고 싶은 작업이 있는 side가 있을 때, rebase으로도 할 수 있지만 cherrry-pick으로도 할 수 있다고 함.

    git cherry-pick C2 C4

     

    4. Interactive Rebase (rebase와 -i 옵션을 사용하는 것)

    체리픽은 원하는 커밋이 무엇인지 알 때(해시값) 간단히 사용할 수 있다.

    그렇지만 원하는 커밋을 모르는 상황에서는 Interactive Rebase를 사용하면 된다.

    Interactive Rebase는 커밋들을 검토할 수 있는 방법을 제공해준다.

     

    -i 옵션을 사용하면 rebase의 목적지가 되는 곳 아래에 복사될 커밋을 보여준다. 보통 이 과정은 vim?과 같은 편집기에서 파일을 연다고 함

    git rebase -i HEAD~4

     

     


     

    터미널로 연습해보다가 head가 master에서 분리되었다고 뜨길래 뭔지 잘몰라서 찾아보다 알게된 사이트를 찾아서 연습했다

    이후 내용은 이 사이트에서 직접 해보는게 나을 것 같음

     

    출처

    https://learngitbranching.js.org/?locale=ko

     

    Learn Git Branching

    An interactive Git visualization tool to educate and challenge!

    learngitbranching.js.org

     

     

    반응형

    '프로그래밍 > git' 카테고리의 다른 글

    UserInterfaceState.xcuserstate 변경사항이 계속 뜰 때  (0) 2021.09.07

    댓글

Designed by Tistory.