본문 바로가기
잡동사니

git 정리

by L3m0n S0ju 2022. 11. 6.

 

 

브랜치란?

 

사람들이 같은 프로젝트에서 서로 다른 작업을 할 때 각자 독립적인 영역을 생성하고 나중에 합쳐서 최종 결과물을 얻게 되는데 여기서 각자 생성한 독립적인 영역을 브랜치라고 한다.

 

 

 

 

처음 만약 main 브랜치와 step1 브랜치가 있고 현재 작업하고 있는 영역이 step1 브랜치라고 하면 *(애스터리스크)가 표시됩니다. 브랜치 관련 명령어는 아래와 같습니다.

 

 

git branch step1 -> step1 브랜치 생성

gi switch step1 -> 현재 작업 영역 step1 브랜치로 이동

 

 

 

 

 

 

위 그림에서 현재 작업 영역은 step1 브랜치인데 여기서 commit 을 하면 step1은 새로운 커밋2를 가르키게 됩니다.

 

 

 

 

 

 

 

 

 


merge란?

 

 

위 그림과 같이 커밋2를 작업하다가 커밋1에서 발견된 버그를 수정해서 bugFix라는 커밋3을 생성한 경우 두 커밋을 합쳐야 하는 경우가 생긴다.

 

step1에 bugFix내용을 가져와서 합치고 싶은 경우 명령어는 아래와 같다.

 

git switch step1

git merge bugFix 

 

 

이후 결과는 아래 그림과 같다.

 

 

 

 

여기서 문제점은 커밋2와 커밋3가 커밋1에서 같은 부분을 수정한 경우 충돌이 발생하여 사용자가 임의로 코드를 수정해야 하는 경우가 생긴다. 여기에 대해서는 이후 설명할 예정이다.

 

 

 


 

rebase란?

 

 

rebase는 merge와 다른 방법으로 커밋을 합쳐주는 방식이다.

 

 

위 그림에서 bugFix를 step1 다음 커밋으로 붙이고 싶으면 아래 명령어를 입력한다.

 

git rebase step1

 

 

 

 

장점 -> 히스토리가 깔끔해진다.

단점 -> 히스토리 기록이 유지되지 않는다.

 

 

 

 

 

 


 

git 상대경로

 

 

 

 

작업 영역을 간편히 옮기고 싶은 경우 만약 커밋 4로 옮기고 싶으면 아래 명령어와 같이 ^(캐럿) 문자를 입력한다.

 

git switch HEAD^

 

결과는 아래와 같다.

 

 

 

 

 


reset 사용법

 

 

 

 

작업을 하다보면 커밋을 하고 난뒤 작업이 잘못된 경우가 생길텐데 아래 명령어를 입력하면 이전 커밋으로 상태를 되돌릴 수 있습니다.

 

 

git reset HEAD~1

 

결과는 아래와 같습니다.

 

 

하지만 이 방법은 다른 사람과 같이 작업하는 프로젝트에서는 사용할 수 없습니다. 왜냐하면 커밋을 삭제해서 히스토리를 수정하므로 다른 사람의 작업에 영향을 끼치기 때문입니다. 따라서 협업할 때는 force push 막아둔 상태에서 시작하는 것이 관례입니다.

 

 

 

 

revert 사용법

 

따라서

 

git reset HEAD~1 명령어 대신에

 

git revert HEAD 명령어를 사용하면 아래 그림과 같이 커밋2는 남겨놓으면서 이전 커밋인 커밋1을 복사해서 새로 만드는 것이라고 저는 이해했습니다. 이 부분은 확실치 않아서 조금 더 공부할 예정입니다.

 

 

 

 

 

 


체리-픽

 

git에는 체리-픽이라는 유용한 명령어가 있습니다. 원하는 커밋만 가져오는 기능인데요 예를 들어 현재 브랜치에 원하는 커밋만 가져오고 싶다면 git cherry-pick 5a3aff 와 같이 원하는 커밋을 가져와서 현재 브랜치의 다음 커밋을 만들 수 있습니다.

 

 

 

'잡동사니' 카테고리의 다른 글

이미지 생성형 AI 활용  (0) 2024.12.01
SEED 고급해킹실습 Lab2 [RTL 공격]  (0) 2022.03.26
SEED 고급해킹실습 Lab1 [LD_PRELOAD 후킹 공격]  (0) 2022.03.26
에이티식스 리뷰  (0) 2022.01.28
목소리의 형태 리뷰  (0) 2022.01.02

댓글