상세 컨텐츠

본문 제목

Git 개념 (reset, revert, branch, merge, rebase)

Git 학습 & 활용

by NayC 2021. 4. 4. 16:18

본문

728x90

준비물 : Git, 실행 프로그램, 소스트리

 

// 명령어

git init : 빈 git 저장소가 만들어진다는 것. 

-> 해당 폴더가 git 관리 하에 들어가게 되는 것

 

.git 폴더 

-> 여기에 해당 폴더의 시공간이 저장되는 것

 

// 소스트리

1. 해당 폴더를 open

-> .git 폴더가 만들어진 것을 확인 가능

 

ㅡㅡㅡㅡ 이제 해야할 일 : 미래에서 언제든 이 시절로 돌아올 수 있도록 타임캡슐 만들기 

- 타임 캡슐에 묻으려면 일단 타임캡슐에 담아야!함.

 

// 명령어 

git status : 아직 담기지 않은 파일들 확인 가능

git add -A : 이 모든걸 타임캡슐에 담겠다는 의미

다시 git status -> changes to be commit (묻을 것들)

git commit -m : 묻자! 

- 근데 묻을 때는 설명을 써놔야 나중에 돌아오기 편하니까 설명을 같이 적어둔다. 

엔터 치면 첫번째 타임 캡슐이 묻히는 것

 

// 소스트리

소스트리는 바로 묻을 파일이 있다고 보여줌

캡슐 안으로 add하는걸 git 용어로 'stage한다'고 함

 

ㅡㅡㅡㅡㅡ 파일들을 수정하거나 삭제해보기 

// git log : 캡슐의 정보들과 메시지들이 뜸 

 

// 소스트리에서는 history를 눌러서 각각 클릭해보면 뭐가 어떻게 바뀌었는지 나옴


만약 과거로 돌아가고 싶을 때

1) 과감한 방법 (reset 사용)

- 이후의 행적을 완전히 깨끗하게 지우는 것

// 명령어

git log에서 일련번호 찾기

// 소스트리

'이 커밋까지 초기화'한다는 버튼 클릭

옵션에서 hard 선택

-> history 가보면 선택한 커밋 이후의 항목들이 삭제된 것을 확인 가능

 

 

2) 과감하지 않은 방법 (revert 활용) 

// 명령어

똑같이 git log에서 일련번호를 찾되 (완전히) 돌아갈 시점이 아니라, 취소할 시점을 찾음

-> git revert xxxxxx 

-> 새 커밋 메시지를 작성하는 화면이 뜸 

그대로 저장하겠다는 vi 명령어 :wq를 입력

 

// 소스트리

- 우클릭 > 커밋 되돌리기 

 

cf) 더 자세한 설명

medium.com/nonamedeveloper/%EC%B4%88%EB%B3%B4%EC%9A%A9-git-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0-reset-revert-d572b4cb0bd5


Branch : 평행우주 넘나들기 (현 시점에서 미래를 분기하겠다는 것) 

// 명령어

상황 설명 (회사에서 하는 버전 말고 내가 따로 뭔가 더 만들어보고 싶을 때)

git branch my-idea라는 나의 평행우주 브랜치를 만듦

-> 다시 git branch를 입력해보면 기존 브랜치는 master, 내가 새로 만든 my-idea  

 

우주 이동하려면 git checkout my-idea 

그리고 나만의 작업을 하다가, 원래 일했던 공간으로 되돌아갈 때는 git checkout master

 

// 소스트리 

브랜치가 만들어진게 눈으로 바로 확인 가능. 더블 클릭으로 왔다 갔다 가능

 

my-idea에서 또 다른 브랜치 가능 (my-another-idea) 

- 이건 my-idea에서 파생된거라 my-idea를 맨 처음에 그대로 담고 있을 것 

 

Merge : 다른 우주에서 가지고 오는 방법 1 

만약 내 아이디어가 기존 마스터에 추가가 된다면?

두 평행우주에서 일어난 변화를 master 에서 불러와야 함.

- 근데 my-another-idea는 my-idea를 포함하니까 my-another-idea만 불러와주면 됨

 

git master로 돌아오기

git merge my-another-idea (git merge 다음에 변화를 가져올 브랜치 이름을 적어주기)

엔터 

git log --graph --all -- decorate 누르면 두 분기에서의 작업 확인 가능 

 

// 소스트리

merge할 브랜치 우클릭 > merge 클릭  

 

주의) 만약 같은 부분에서 수정 사항이 일어났는데 merge하면 conflict가 일어남 

-> 협업할 때는 되도록 다른 브랜치들이 같은 파일을 수정하는 일은 x 

 

 

Rebase : 다른 우주에서 가지고 오는 방법 2

많은 사람들이 협업하면 여러 브랜치들에서 덕지덕지 붙는 상태로 보여지게 되는데, 이걸 한 줄로 보이게 하고 싶을 때는 merge대신에 rebase를 사용함

 

 

// 브랜치를 삭제할 때는 git branch -D 쓰고 브랜치명 적어주면 된다. 

 

// 소스트리에서는 그냥 브랜치 > 우클릭해서 삭제

 

 

 

 

youtu.be/FXDjmsiv8fI

728x90
반응형

관련글 더보기