해당 내용은 생활코딩에서 공부한 내용을 복습하기 위해 다시 간단하게 정리한 글입니다.

더 자세한 건 생활코딩에서


버전 관리 시작

먼저 git bash를 키고 버전을 생성할 디렉토리로 이동한다.

git bash에 git init . 입력

입력하고 난 후 .git이라는 디렉토리가 생성된다.

.git이 추가됬다.

.git에 버전이 저장되므로 .git은 지우면 안된다.

 

버전 생성전에 아래 명령어를 입력해준다.

 

git config --global user.name "Your Name"

git config --global user.email "you@example.com"

 

Your Name과 you@example.com은 각자에 맞게 변경해준다.


버전 생성

수정한 파일 전체는 Working tree에 존재하고, 그 중 버전을 생성할 일부(전체)를 Staging Area에 올린다.

git에게 버전을 생성하라고 하면 git은 Staging Area에 있는 파일들로 하나의 버전을 생성하여 repository(.git)에 넣는다.

 

즉, Working tree는 파일을 수정하는 곳

Staging Area는 그 중 버전을 만들 파일들이 있는 곳

Repository는 만들어진 버전들이 있는 곳이라고 생각하면 된다.

 

버전을 생성하기 위해 파일을 생성한다.

파일이 추가된 후 현재 상태

git add hello1.txt로 파일을 Staging Area로 올린다.

hello1.txt가 Untracked files에서 Chages to be committed으로 변경되었다.

 

git commit -m "Message 1"으로 Repository에 버전을 생성해준다.

그 후 Working tree에는 아무것도 존재하지 않는다.


버전 이동

현재 상태

버전을 이동할 때는 (삭제 x) git checkout <commit>을 사용한다.

<commit>에는 git log를 치면 나오는 각 commit(노란색) 뒤의 id를 입력하면 된다.

버전이 변경된 모습

가장 마지막 버전으로 이동하고 싶으면 git checkout master를 입력하면 된다.


버전 삭제

버전을 이동할 때 그 후의 버전은 삭제하고 싶다면

git reset을 사용하면 된다.

git reset에는 여러 모드가 있고, 지금 사용할 모드는 --hard이다.

 

아예 master가 Message 2 버전으로 변경되었고 그 이후의 버전은 삭제되었다.

 

 

버전으로 연결된 링크가 없으면 그 버전(commit)은 삭제되고, 링크가 있으면 삭제되지 않는다.

branch가 가리키는 커밋을 변경할 때는 reset을

head가 가리키는 branch나 commit을 변경할 때는 checkout을 사용한다.


git revert

버전을 삭제하지 않고 이전 버전으로 바꾸고 싶을 때 사용한다.

만약 git revert version4를 하면 version 4에서 추가된 내용들이 삭제된 버전이 생성된다.

따라서 그 이전 버전인 version 3와 동일한 내용을 가진 새로운 버전이 생성된다.

 

git revert 실행
           git revert 전                                                                      git revert 후

기존의 R4는 삭제되지 않고 Revert R4가 추가되었다.

Revert R4는 R3와 내용이 같다.

 

revert는 해당 버전에서 추가된 내용을 삭제한 새로운 버전을 추가하는 것이기 때문에

중간의 Message 2로 revert를 하면 충돌이 난다.

그 후 R3와 R4에서 추가된 내용을 어떻게 할지 git이 처리하지 못하고 conflict (충돌)가 일어난다.

따라서 역순으로 revert를 해야한다.

'개발 > git' 카테고리의 다른 글

GIT Cherry-pick & rebase  (0) 2020.07.29
GIT 협업  (0) 2020.07.24
GIT Backup  (0) 2020.07.22
git Branch & Conflict  (0) 2020.07.10
git 명령어  (0) 2020.07.05

+ Recent posts