![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/m0prQ/btrKpP78l2m/KrzxNAolNYFh6ZiKo81TCk/img.png)
Squash merge란? GitHub에서 PR을 merge할 때 [Create a merge commit], [Squash and merge], [Rebase and merge]의 3가지 옵션이 있다. create a merge commit은 단순하게 git merge 브랜치명만을 사용하는 방법이다. 해당 방법은 Fast-Forward & 3-way 병합 글을 보면 어떤 방식으로 병합이 되는지 알 수 있다. Rebase and merge는 rebase 글을 보면 된다. 이 글에서는 Sqash and merge에 대해서 다룰 것이다. squash merge는 git 히스토리를 요약해서 병합하는 방법이다. 분기 이후에 발생한 브랜치의 모든 commit들을 하나의 새 커밋으로 요약한다. 위에는 git log..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/btVFM9/btrEtNh51Of/zt59rF8Jk7LmbfnNXRely1/img.png)
revert 프로젝트를 되돌리기 위해서 reset을 사용하면 commit들이 삭제되기 때문에 좋은 방법이 아니다. 프로젝트를 과거 시점으로 되돌면서 기존의 commit들을 삭제시키지 않기 위해서는 revert를 사용하면 된다. revert는 기존의 commit들을 삭제하지 않고 새로운 commit을 생성하여 프로젝트를 과거의 시점으로 되돌린다. revert에서 log의 변화 git revert를 사용하면 메시지를 작성할 수 있는 vi 에디터가 나타난다. 로그를 출력하면 revert 메시지가 추가된 것을 확인할 수 있다. 그리고 파일들을 확인하면 이전의 시점으로 되돌아간 것을 확인할 수 있다. 여러 commit들을 revert 마침표 2개(..)를 사용하여 여러 commit들을 revert할 수도 있다. ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/E3HQT/btrEdaXv2ID/Ip5AIDFaraCtXh8Dhwk4ck/img.png)
reset reset은 이전 commit으로 되돌아 갈 때 사용한다. --soft git log를 간단하게 출력했다. 이를 기준으로 비교할 것이다. git reset에 soft 옵션을 주면 HEAD 포인터의 위치가 변했고 변경된 HEAD 포인터 다음의 commit이 사라진 것을 확인할 수 있다. 하지만 파일들을 출력해보면 다른 변화가 있지는 않다. 그리고 수정된 파일은 모두 stage에 등록되어 있다. 파일을 수정하고 add하고 commit을 한 3개의 상태가 있을 때 soft 옵션은 add를 하고 난 뒤의 상태로 되돌려 준다. 즉 commit을 하기 직전의 상태로 되돌려준다. add는 이미 실행되었기 때문에 스테이지에 파일들은 모두 등록되어 있다. 요약하면 soft 옵션은 HEAD의 위치를 변경하고, ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Q6xks/btrDWKdZKJd/KV67KiMC0wAOMEKyKhyzM0/img.png)
rebase rebase도 merge와 마찬가지로 브랜치를 합치는 방법 중 한가지이다. rebase가 merge와 달리 commit들을 재배열한다. base 새로운 브랜치는 기존의 브랜치를 기반으로 생성된다. 그리고 이렇게 새로운 브랜치가 생성됐을 때 분기가 발생했다고 표현한다. 위의 그림에서 feature 브랜치는 main 브랜치 기반으로 생성된다. 분기가 발생한 공통 조상 commit, main commit 1을 base라고 한다. rebase는 이 base 앞에 re가 붙은 단어이다. rebase는 브랜치 분기가 발생한 기준이 되는 브랜치의 base commit을 변경하는 것이다. rebase를 하는 이유 rebase를 하면 commit의 트리 구조가 단순화된다. 브랜치의 개수가 많아지는 경우 co..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cSoXoA/btrDRjmBR5J/GI71XqngG7uvdq42rIbOC1/img.png)
Fast-Forward Fast-Forward는 직역하자면 빨리감기이다. Fast-Forward 병합은 혼자 개발할 때 사용한다. 혼자 개발할 때 commit은 순차적으로 생성된다. commit이 순차적으로 발생한 경우 사용하는 병합 방식이 Fast-Forward이다. 혼자 작업 할 때 새로운 기능을 추가하기위해서 새로운 브랜치를 생성한다고 하자. commit들은 그림에서 볼수 있듯 순차적으로 생성된다. 해당 commit들은 Fast-Forward 방식으로 병합한다면 아래의 그림과 같이 병합될 것이다. 여기서 가장 큰 특징은 분기가 시작된 브랜치, 즉 main 브랜치에 아무런 변경도 없어야 한다. main commit 이후로는 어떤 commit도 없기 때문에 fast-forward 병합이 가능했다. 3-..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Nq5WW/btrDF9E0FIE/nxQ8uX9dmIMUrJLVTeGOuk/img.png)
스태시 스태시는 완료되지 않은 작업들을 임시로 저장할 수 있게 도와주는 기능이다. 스태시를 통해서 워킹 디렉토리의 작업을 스택 영역에 임시로 보관할 수 있다. 스태시를 사용하면 마지막 커밋 이후로 작업한 내용은 임시 저장되고 마지막 커밋 상태로 돌아간다. 변경사항이 남아 있을 때 git checkout으로 브랜치를 변경할 수 없다. 변경 작업을 도중 완료되지 않은 상태에서 브랜치를 변경해야 할 때 스태시 기능을 사용하면 된다. 실습 stash - 변경 내용 저장 새로운 브랜치에서 stash.txt라는 파일을 변경한 뒤 변경내용을 저장하지 않고 main 브랜치로 변경할 때 main 브랜치로 변경되지 않고 error가 출력된다. "Please commit your changes or stash them be..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/pFfLP/btq9DuRJDpd/bFkNSPk7irLgnNpXrd1Z41/img.png)
Makefile에서 다른 unittest만 실행하려고 했는데 다른 명령어까지 실행되어 파일이 변경되었다. 이를 다시 원래대로 되돌리려고 한다. modified file 저기 위를 보면(git status를 입력하고 난 뒤의 모습이다) git restore를 사용해서 변경된 것을 버리라고 했다. git restore 파일명 위의 명령어를 입력하고 난 뒤 확인하면 modified된 파일이 다시 원래대로 되돌아 간 것을 확인할 수 있다. Untracked file 위에서 사용한 git restore에 untracked file를 입력하였을 때 적용되지 않는다. $git clean -fd $git clean -f 이 경우에는 git clean을 사용해야 한다. -f를 주면 untracked된 파일을 모두 지울 ..
- Total
- Today
- Yesterday
- git
- DGS Framework
- mysql
- Python
- Basic Type
- string
- 네이버 2022 공채
- java
- 코딩테스트
- 확장 함수
- go 특징
- python3
- 1차 인터뷰
- solidity
- Kotlin
- downTo
- Squash and merge
- 2차 인터뷰
- pm.test
- Kotlin In Action
- 코틀린
- 주생성자
- postman collection
- github
- squash merge
- postman
- graphql
- pm.expect
- postman tests
- hashcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |