쉬엄쉬엄블로그

Git 본문

부스트캠프 AI Tech 4기

Git

쉬엄쉬엄블로그 2023. 7. 6. 10:26
728x90

add

  • 의미
    1. commit 대기 상태를 만든다.
    2. untracked를 tracked로 만든다.
    3. 충돌을 해결했다고 git에게 알려준다.

reset

  • head가 가리키는 master를 옮긴다.
  • checkout은 head를 옮기고 reset은 head가 가리키는 branch를 옮긴다.
  • git reset --hard COMMIT_ID
  • if (attached) { HEAD의 Branch가 움직임 } else { == checkout }
  • commit 취소
    • git reset HEAD~1
      • 마지막 1개의 commit을 취소

alias

  • git config --global alias.l ‘log --oneline --all --graph’
    • l : log --oneline --all --graph
    • “ 쓰면 안 됨, ‘ 써야 됨
  • git config --global alias.c ‘commit -m’
    • c : commit -m
    • “ 쓰면 안 됨, ‘ 써야 됨
  • 삭제할 때
    • vi ~/.gitconfig
      • alias 부분 삭제 또는 수정

remote

  • git remote add [repository 별명] [repository 주소]
    • git remote add origin [주소]
  • git remote -v
    • 연결된 저장소 목록 보기

push

  • git push --set-upstream origin master
    • local의 master와 remote의 master가 페어링 됨
  • git push <remote> --delete <branch>
    • 원격에서 브랜치를 삭제하는 명령어

commit 수정

  • git commit --amend -m [COMMIT MESSAGE]
    • commit message를 변경함
      • 그런데 기존에 다른 message로 commit 했던 것도 남아있음
      • 삭제가 아니라 새로운 message로 commit을 생성하는 것 (commit id가 바뀜)
        • reset을 통해 기존 commit으로 돌아갈 수도 있음
      • 아직 remote에 push 하지 않은 내용만 수정 가능
        • push하지 않았다면 local에만 쌓여있게 됨

pull

  • fetch + merge
    • fetch : 다운로드 받는 것
      • confilct가 절대 발생하지 않음

Ignore

.template

  • 형식이 저장된 파일을 명시해줌

pull (fetch & merge)

  • 같은 이름의 브랜치라도 깃은 원격 저장소와 지역 저장소를 다른 브랜치로 취급한다.

Fast-forward

  • develop에서 새로운 기능을 추가함
  • master에서 변경사항 없음
  • master에서 변경사항이 없을 때 master에서 develop를 merge하면 master가 develop으로 이동하기만 하면 됨
  • (master) git merge develop 을 하면 master가 develop과 합쳐졌다는 기록이 남지 않음
  • (master) git merge --no-ff develop 을 하면 master가 develop과 합쳐졌다는 기록이 남음
    • --no-ff : no fast-forward
      • fast-forward 적용하지 않겠다는 의미

pull request

  • master에 병합해달라는 요청서

tag

  • commit에 이름을 붙이는 것

cherry-pick

  • 부분 병합

rebase

  • branch와 merge 기록이 없었던 것처럼 만들 수 있음
    • ⇒ branch가 하나인 것처럼 만들 수 있음
  • git graph를 단순하게 만드는 효과
  • merge는 진실이지만 복잡하다
  • rebase는 단순하지만 거짓이다

revert

  • git revert [COMMIT_ID]
  • 현재 버전에서 COMMIT_ID 버전의 내용만 지우고 적용
  • 예제
    • A - B - C → D
    • git revert B
    • ⇒ A - C → D
Comments