article thumbnail image
Published 2022. 3. 6. 22:13
728x90

📖 git

특정 파일을 누가 수정했는지 확인하기 : git blame

확인되는 내용

hash, 작성자 이름, 작성일시, 메시지를 확인 할 수 있다.

 

옵션

 

 

임시 저장 공간 : stash

명령어(modified 파일)

작업한 내용은 stash 공간에 저장되고, modified 전 상태로 파일이 복구된다.

 

명령어(unstacked 파일)

작업한 내용은 stash 공간에 저장되고, 파일이 사라진다.(stash 공간으로 이동해서 사라짐)

 

stash 공간에 저장된 파일들 확인하기

stash 명을 확인 할 수 있다.

 

stash 공간에 저장된 파일 불러오기

 

 

stash 파일 삭제하기

 

branch 생성, 수정, 삭제, 이동

이해

branch는 branch 간에 서로 영향을 주지 않는, repository 안에 있는 독립적인 작업 공간이다.

필요하다면 branch를 병합(merge) 할 수 있다.

 

branch 생성

 

생성한 branch 확인하기

 

branch 이름 바꾸기

 

branch 삭제하기

 

 

branch로 이동하기

 

branch 생성과 이동을 동시에 하기

 

branch를 병합하여, 작업한 내용 합치기

 

branch 병합하기 : fast-forward

하지만, dev branch와 main branch가 같은 commit을 참조하게 되어, 배포와 개발 작업공간이 합쳐지게된다.

이렇게 병합된 방식을 fast-forward라고 한다.

 

새로 commit을 생성하여, main과 dev branch 분리하기 : 3-way merge

이를 해결하기 위해, main branch에서 새로운 commit을 생성하여 merge 하면 된다.

두개의 브랜치로 fork되는 commit을 base라고 한다.

하지만, 이렇게 된다면, 배포용 branch를 commit을 해야하고, pull 충돌이 발생하여 추가적인 작업을 해야하는 번거로움이 발생한다. 이를 해결하기 위해 merge 옵션을 사용한다.

 

merge 옵션 : --ff, --no-f, --squash

fast-foward 방식으로 merge하기

 

3-way 방식으로 merge하기

commit이 자동으로 진행되어, vim 편집기가 실행된다.

 

3-way 방식으로 merge 그리고 병합할 branch 이력 지우기

squash는 사전적인 의미처럼 강압적인 병합 방법으로, commit 이력과 merge된 branch의 commit 이력도 남기지 않는다. 그리고 commit이 자동으로 되지 않아, 수동으로 commit을 진행해야한다.

 

merge 되지 않은 branch 강제 삭제

merge되지 않은 branch는 -d 옵션으로 삭제되지 않아, -D 옵션으로 삭제해야한다.

 

rebase

이해

작업 종류가 비슷한 branch를 merge시 하나의 branch로 병합할때 사용한다.

 

한 줄기의 branch로 표시하기

 

rebase 충돌

pull 충돌과 같은 방법으로, 파일을 수정하고 git rebase --continue를 입력하면 된다.

 

cherry-pick

이해

두개의 branch를 병합하려고 할때, 각 branch의 최신 commit이 아닌 과거의 commit과 병합할때 사용한다.

 

명령어 : cherry-pick

과거의 commit hash값을 넣으면 된다.

 

 

cherry-pick 충돌

pull 충돌과 같은 방법으로, 파일을 수정하고 git cherry-pick --continue를 입력하면 된다.

 

원격 저장소 branch 생성하기

이해

로컬 저장소에 다수의 branch를 생성할 수 있듯이, 원격 저장소도 다수의 branch를 생성 할 수 있다.

 

branch 생성

로컬 저장소에 branch 생성

 

생성한 브랜치에서 push

선행 : 파일 수정, add, commit

* push를 진행하게되면, 원격 저장소에 로컬 저장소의 branch가 생성된다.

 

실전 : fork와 Pull Request

타켓 프로젝트 저장소 fork 클릭

자신이 원격 저장소를 만든 사람이 아니라면, 깃허브에 있는 작업내용을 수정할 권한이 없다. 따라서 fork를 통해 타 원격 저장소를 clone 할 수 있는 권한을 얻는다.

 

또한, fork를 통해 원작자에게 수정요청을 할 수 있다.

 

원격 저장소 파일 복사하기

 

로컬 저장소와 원격 저장소 연동하기

 

로컬 저장소 branch 생성

 

생성한 브랜치에서 push

선행 : 파일 수정, add, commit

* push를 진행하게되면, 원격 저장소에 로컬 저장소의 branch가 생성된다.

 

깃허브 pull request

 

원작자의 코드 리뷰 후 merge

 

원격 저장소가 업데이트 되면, pull

'공부 > 공통' 카테고리의 다른 글

[공부] 코딩 컨벤션 (기본)  (0) 2022.05.12
[공부] npm 정리  (0) 2022.05.05
[공부] Git 정리 - 팀 프로젝트  (0) 2022.05.02
[공부] git 정리 -2  (0) 2022.03.04
[공부] git 정리 -1  (0) 2022.02.28
복사했습니다!