Github Cheatsheet
2020, Mar 26
Commit Rule
Rebase #link
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> # 현재 변경한 코드 가지고 돌아감
Commit 합치기 squash #link
$ 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