git 브랜치 관리하기
포스트
취소

git 브랜치 관리하기

git 명령어 내가 모르는 것만

커밋 푸시 풀 클론 이런 기본은 넘기고 브랜치 관리 위주로 씀

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

기본 내용은 전에 정리해둔 거 있음: https://dapin1490.github.io/satinbower/posts/it-git-starter/

  • git rebase {branch}: {branch}에 현재 선택된 브랜치의 기록(커밋)을 복붙한다. A라는 브랜치에서 git rebase B를 하면 B 브랜치 앞에 A 브랜치의 내용을 복붙했다는 커밋이 추가되는 방식.
  • git checkout {name}: 현재 git이 포커싱한 대상을 {name}으로 바꾼다. {name}에는 브랜치 이름이나 특정 커밋의 해시값이 들어갈 수 있다.
    • git checkout HEAD^: 지금 HEAD보다 한 칸(커밋) 위로 올라간다. ^ 1개당 하나씩 올라간다. 2개를 쓰면 2칸 올라간다. HEAD 대신 브랜치 이름을 써도 된다
    • git checkout {HEAD/branch}~{num}: 지정 갯수만큼 올라간다. 언제까지고 ^만 길게 붙일 수는 없잖아.
    • git branch -f {branch} HEAD~{num}: 강제로(-f) 특정 브랜치의 HEAD를 지정한 위치로 옮긴다.
  • git reset HEAD~1: 로컬에서 커밋을 하나 되돌아감. 포커싱만 바꾸는 게 아니라 마치 작업 자체를 안 한 것처럼 되돌림. 하지만 원격에는 커밋이 그대로 남기 때문에 강제하지 않는 이상 원격 푸시 불가.
    • ~{num} 표기를 빼면 현재 커밋을 되돌린다
  • git revert HEAD~1: 커밋을 되돌렸다는 커밋을 추가함. 기존 기록에 추가되기 때문에 원격으로 푸시 가능.
    • ~{num} 표기를 빼면 현재 커밋을 되돌린다
  • git cherry-pick {commit hashs...} : 특정 커밋만 쏙 뽑아서 HEAD에 복붙한다
  • git rebase -i {ref-branch} : 인터랙티브 UI로 리베이스하기. 현재 HEAD에 {ref-branch}의 커밋을 선택적으로 복붙할 수 있다. 인터랙티브 cherry-pick이라는 거임
  • git commit --amend: 커밋 수정하기. 이미 push된 건 기본적으로 수정할 수 없지만, rebase로 수정할 커밋을 끌어올려서 수정하고 다시 복구하면 마법처럼 수정이 된다.

    이건 말로는 설명이 부족해서 예시 추가함. 왼쪽 플로우에서 오른쪽 플로우로 수정되면 성공인 거임

    260408-HAE-1-git-1.png

    1. git rebase -i main → c2와 c3 커밋의 순서를 바꿈

      image.png

    2. git commit --amend → 맨 앞에 나와있던 c2 커밋이 수정됨

      image.png

    3. git rebase -i main → c2와 c3 커밋의 순서를 바꿈

      image.png

    4. git checkout main → HEAD를 main으로 보냄

      image.png

    5. git rebase caption → main에 caption의 커밋을 복붙함. 근데 어차피 main과 caption이 같은 흐름에 있었기 때문에 그냥 HEAD만 이동한 것처럼 보이게 됨.

      image.png

이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.

Vue.js (3)

도커로 블로그 로컬 빌드하기 + 그런데 이제 로컬엔 WSL과 도커만 설치한