본문 바로가기
Self-Development/Learning Note

Git 연습하기-1

by 담백로봇 2022. 7. 4.

깃 공부하기 굉장히 좋은 싸이트.  하나하나 겉넘지말고 따라해보기!

 

learngitbranching.js.org/?locale=ko

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

깃명령어 나열

  • commit: 아는거
  • branch: 아는거
git log --all --graph --decorate --oneline

*  로그상에서 브랜치 그래프를 보여줄 수 있다!!

 

git push origin --delete  {브랜치명}

*브랜치 원격삭제시

 

  • checkout: 아는거
  • cherry-pick: 모르는거
  • reset: 모르는거
  • revert: 모르는거
git revert --no-edit f665b8f
  • rebase: 모르는거 
  • merge : 아는거

GIT 기본 챕터

1. Git commit 소개 : 완료

 

2. Git branch 쓰기 : 완료

 

3. Git merge : 완료 

 

4. git rebase : 완료 

 

rebase 핵심:

 

리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것입니다. 조금 어렵게 느껴질 수 있지만, 리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있습니다. 리베이스를 쓰면 저장소의 커밋 로그와 이력이 한결 깨끗해집니다. bugFix 브랜치에서의 작업을 main 브랜치 위로 직접 옮겨 놓으려고 합니다. 그렇게 하면, 실제로는 두 기능을 따로따로 개발했지만, 마치 순서대로 개발한 것처럼 보이게 됩니다.

 

* merge는 합치고싶은 브랜치에서 다른 브랜치꺼를 가져오고  rebase는 보내고싶은 브랜치에서 다른 브랜치로 넘기는느낌.

rebase 실행 트리

1. HEAD 분리하기: 완료

 

HEAD는 현재 체크아웃된 커밋을 가리킵니다. HEAD는 항상 작업트리의 가장 최근 커밋을 가리킵니다. 일반적으로 HEAD는 브랜치의 이름을 가리키고있습니다

 

HEAD 분리하기

HEAD를 분리한다는 것은 HEAD를 브랜치 대신 커밋에 붙이는 것을 의미합니다.

* 브랜치와 commit이 나누어진 부분이 헷갈렸는데 아래 블로그에서 자세히 설명 thanks.

https://velog.io/@kwonh/Git-%EC%BB%A4%EB%B0%8B%EA%B0%9C%EC%B2%B4%EC%99%80-%EB%B8%8C%EB%9E%9C%EC%B9%98-Commit-Object-Branch

2. 상대참조(^)

상대 커밋은 강력한 기능인데, 여기서 두가지 간단한 방법을 소개하겠습니다.

  • 한번에 한 커밋 위로 움직이는 ^
  • 한번에 여러 커밋 위로 올라가는 ~<num>
git checkout HEAD^

 

3. 상대참조#2 (~)

커밋트리에서 위로 여러 단계를 올라가고 싶을 수 있습니다. ^를 계속 입력해서 올라가는것 말고 좋은 방법이 있습니다. Git 에는 틸드 (~) 연산자가 있습니다.

git checkout HEAD~4

*위로부터 1이 카운트됨

상대 참조를 사용하는 가장 일반적인 방법은 브랜치를 옮길 때 입니다. -f 옵션을 이용해서 브랜치를 특정 커밋에 직접적으로 재지정 할 수 있습니다.

git branch -f main HEAD~3

4.  Git에서 작업 되돌리기

Git에서 변경한 내용을 되돌리는 방법은 크게 두가지가 있습니다 -- 하나는 git reset을 쓰는거고, 다른 하나는 git revert를 사용

* 로컬에서는 git reset 쓰고 원격에 영향을 미칠려면 git revert를 쓰자

git reset HEAD~1
git revert HEAD // 혹은 해쉬ID를 사용해도됨

<좌> reset 변경 트리        <우> revert 변경 트리

 

작업을 여기저기로 옮기기

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

git cherry-pick C2 C4

 

댓글