GIT

    [Git] 작업을 되돌리는 방법 (checkout, reset, revert)

    협업에 있서 작업을 되돌리는 건 신중함을 필요로 합니다. 그래서 이 글을 통해 작업을 되돌리는 대표적인 방법들을 정리해보겠습니다. 아래 자료를 참고했습니다. [생활코딩] GIT4 - Reset & Revert git reset vs git revert HEAD HEAD는 현재 작업 중인 브랜치를 가리키는 일종의 포인터입니다. # .git/HEAD ref: refs/heads/master 기본적으로 master 브랜치로 checkout 되어있습니다. checkout checkout은 두 가지 역할을 합니다. (Git 2.23 이후 두 기능은 switch, restore의 개별 명령어로 분리) 특정 브랜치 또는 커밋으로 이동 (= git switch) 내용 되돌리기 (= git restore) $ git c..

    [Git] 브랜치를 합치는 방법 (merge, rebase, cherry-pick)

    브랜치를 합치는 방법은 여러 가지가 있습니다. 물론 merge로도 협업에 문제는 없지만 다양한 방법을 알아두면 능동적으로 활용 수 있습니다. 이 글을 통해 merge, rebase, 그리고 cherry-pick에 대해 정리해보겠습니다. 아래 자료들을 참고했습니다. Pro Git - Rebase 하기 Pro Git - 프로젝트 관리하기 [생활코딩] 지옥에서 온 Git merge merge의 종류에 관한 이전 포스팅을 참고하면 좋습니다. 협업에서 가장 일반적인 3-way merge 방식을 예로 들겠습니다. $ git checkout master $ git merge experiment merge 결과, 변경 내용들을 담고 있는 merge 커밋(C5)이 생성됩니다. 또한 experiment 브랜치의 작업 내용..

    [Git] merge의 종류 (Fast forward, 3-way merge)

    merge는 저에게 항상 예측 불허한 존재였습니다. 언제 merge 커밋이 생기고, 왜 충돌이 발생하는지 그 원인을 몰랐기 때문입니다. 그래서 이 글을 통해 merge의 개념과 방식을 정리해보고자 합니다. 아래 자료들을 참고했습니다. Pro Git - 브랜치와 Merge의 기초 [생활코딩] 지옥에서 온 Git Fast forward merge Before $ git checkout master $ git merge hotfix Updating f42c576..3a0874c Fast-forward ... master 브랜치에선 작업이 없었기 때문에 여전히 hotfix 브랜치와 동일 선상에 있습니다. 이때 merge를 하면 master 브랜치의 HEAD가 hotfix 브랜치의 HEAD로 이동합니다. 마치 F..

    [Git] pull 대신 fetch 사용하기

    pull, fetch는 모두 원격 저장소의 커밋을 로컬 저장소로 가져오는 역할을 합니다. 다만 차이점은, pull은 fetch + merge 작업이 동시에 발생합니다. 아마 당연하게도 fetch를 습관화하는 분들이 있을 것 같습니다. 저 또한 조금은 불편하지만 안전성이 좋은 fetch를 추천하고 싶습니다. Pro Git에서 많은 인사이트를 받았습니다. fetch fetch는 원격 저장소의 커밋들을 로컬 저장소로 가져옵니다. 하지만 코드의 merge 과정은 발생하지 않아 로컬 저장소의 내용이 변경되지 않습니다. 그래서 fetch 이후의 행동이 자유롭다는 장점이 있습니다. 주로 merge 하기 전 신중함이 필요한 상황에서 fetch를 사용하면 좋습니다. pull pull은 원격 저장소의 커밋을 가져오는 동시..