Skip to content

Instantly share code, notes, and snippets.

@JinsupJung
Created June 4, 2023 13:29
Show Gist options
  • Save JinsupJung/7ff9df146cc0875d8017b1fab624eede to your computer and use it in GitHub Desktop.
Save JinsupJung/7ff9df146cc0875d8017b1fab624eede to your computer and use it in GitHub Desktop.
commit
branch : 하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역
checkout
cherry-pick <commit> <commit2> <...>
reset HEAD~1
revert HEAD
rebase
merge
< Git 리베이스(Rebase) >
브랜치끼리의 작업을 접목하는 두번째 방법은 *리베이스(rebase)*입니다. 리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것입니다.
조금 어렵게 느껴질 수 있지만, 리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있습니다. 리베이스를 쓰면 저장소의 커밋 로그와 이력이 한결 깨끗해집니다.
git branch bugFix; git checkout bugFix
git commit
git checkout main; git commit
git checkout bugFix; git rebase main
(연습문제)
git rebase main bugFix
git rebase bugFix side
git rebase side ahother
git rebase another main
< git HEAD 분리하기 >
HEAD는 현재 체크아웃된 커밋을 가리킵니다. -- 다시 말하자면 현재 작업중인 커밋입니다.
HEAD는 항상 작업트리의 가장 최근 커밋을 가리킵니다. 작업트리에 변화를 주는 git 명령어들은 대부분 HEAD를 변경하는것으로 시작합니다.
일반적으로 HEAD는 브랜치의 이름을 가리키고있습니다(bugFix와 같이). 커밋을 하게 되면, bugFix의 상태가 바뀌고 이 변경은 HEAD를 통해서 확인이 가능합니다.
< commit 이동 >
한번에 한 커밋 위로 ^ git checkout main^ main^^
한번에 여러 커밋 위로 ~<num>
git branch -f main HEAD~3 (-f=force)
=> main 브랜치를 HEAD에서 3번 뒤로
(연습문제)
git branch bugWork main^^2^
< 작업 되돌리기 >
git reset 애초에 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 옮기는 것
git reset HEAD~1
git revert 각자의 컴퓨터에서 작업하는 로컬 브랜치의 경우 리셋(reset)을 잘 쓸 수 있습니다만, "히스토리를 고쳐쓴다"는 점 때문에 다른 사람이 작업하는 리모트 브랜치에는 쓸 수 없습니다. 현재 커밋과 반대되는 커밋이 생긴다. 변경 내역을 push한다.
git revert HEAD
변경분을 되돌리고, 이 되돌린 내용을 다른 사람들과 공유하기 위해서는, git revert를 써야합니다.
< git cherry-pick c2 c4 => 현재 커밋 밑에 c2 c4를 붙여준다
< Git Rebase --Interactive 옵션 >
vim editor 뜨면 명령어 입력 후 :wq로 종료
< git tag v1 c1 >
영구 milestone으로 지정
< git describe <ref> >
git을 찾을때 유용
< 초기화 >
rm -rf ./.git
git init => 새로운 .git이라는 저장소가 생긴다
git add . => working에서 stage 상태로 (index)
git commit -m 'Commit Message' => 로컬 최종본 head 상태
git status => 현재 상태
git rm --cached 파일명 => staging에서 working으로
git log
git log --oneline => 한줄로
< 로컬 되돌리기 >
git checkout -- 파일명 => 로컬의 변경내용을 변경 전 head로 돌려준다
< 로컬 모든 내용 포기 >
git fetch origin
git reset --hard origin/master
git branch => 현재 로컬 브랜치 확인
git checkout -b 브랜치명 => 새로운 branch 생성
git checkout 브랜치명 => 현재 선택된 브랜치로 변경
git checkout -d 브랜치명 => 브랜치 삭제
git merge 브랜치명 => main으로와서 실행하면 가지쳤던 브랜치 병합-> 합쳐진 브랜치는 삭제 git branch -d 브랜치명
< 충돌 >
git merge --abort merge 이전으로 되돌리기
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment