Github Cheatsheet

Github Cheatsheet

2020, Mar 26    

Commit Rule

temp_1583198927805 -354148357

feat branch를 따서 작업을 하던 도중, develop 브랜치가 갱신되어서 merge를 하기 어려운 경우가 있다.

         A---B---C feat
         /
    D---E---F---G develop

이 경우 A의 커밋의 base를 G로 변경해주면 해결이 되는데 이럴때 사용하는 기능이 rebase이다.

명령어는 간단하다.

$ (feat) git fetch origin develop
$ (feat) git rebase origin/develop

이미 pull 이 받아져 있는 상황이라면 굳이 git pull origin develop 명령어가 필요 없다.

충돌이 일어나지 않는다면 결과는 다음과 같다.

                  A'--B'--C' feat
                 /
    D---E---F---G develop

충돌 난 경우

충돌난 파일들을 수정한 다음

$ git add <filename>
# rebase
$ git rebase --continue
# undo git rebase
$ git rebase --abort

Stash

git을 사용하다 보면 다른 브랜치에서 작업을 하고 있는 나를 발견하게 됨.

그럴때 사용 가능하다.

$ git stash
$ git checkout -b newbranch
$ (newbranch) git statsh pop

추가적인 명령어

  • git stash list
  • git stash drop
  • git stash apply

Reset

예전 커밋으로 돌아가거나, 이미 작업한 코드를 날려버리고 싶은 경우 사용

$ git reset --hard HEAD # 빡세게 날리기
$ git reset <commit id> # 현재 변경한 코드 가지고 돌아감
$ git log --pretty=oneline
$ git rebase -i HEAD~3 # 숫자 -> 최근 3개의 커밋 interactive rebase
pick 7c65355 Task 1/3
squash 2639543 Task 2/3 # pick -> squash
squash d442427 Task 3/3

변경 후 저장하면

다른 vim 창이 뜨면서 커밋 메시지 rewrite할 수 있다.

이미 push한 커밋을 합치는 경우

$ git push -f / git fetch && git merge --squash

마지막 Commit 바꾸기

$ git commit --amend -m "새로운 커밋"
$ git push -f origin 브랜치이름

브랜치 삭제

$ git push --delete origin BACK-01