Git

GIT - Version Control

마닐라 2021. 9. 19. 14:54

git init - git에게 버전관리를 시키겠다는 명령어

->실행 시키면 .git 폴더가 생성이 된다.

 

 

버전으로 만들어지기 전 단계(수정한 파일들이 있는 곳) - Working tree

버전으로 만들기 위해 존재하는 공간 - Staging Area

버전이 저장되어 있는 곳 - Repository(.git 폴더)

 

git status - 깃의 상태를 보여주는 명령어

 

git add 이전 상태

Untracked files는 버전 관리가 되고 있지 않은 파일을 보여준다.

저걸 staging Area로 올려야하는데 git add를 사용하면 된다.

 

git add로 해당 파일을 staging area로 올리는 명령어

 

git add 이후 상태

 

git commit - staging area에 있는 파일을 repository로 옮기는 명령어(버전 생성)

 

git commit 이후 상태

 

git log - 버전에 대한 설명이 있는 명령어

 

git log 명령어

 

파일 수정 후 상태를 확인해보면 status가 아래와 같이 출력된다.

버전 관리는 되어 있는 파일이므로 Untracked ... 는 출력되지 않는다.

 

수정 파일 git status

 

위와 같이 수정파일을 다시 반영하고 싶으면 git add, git commit 명령어를 차례대로 입력하면된다.

 

그리고 2개 이상의 파일을 staging area 로 올리고 싶으면 각각 add 를 시키면된다.

그러고나서 commit을 한 뒤에 git log --stat 명령어를 입력하면 상세한 로그를 볼 수 있다.

 

git log --stat 명령어

 

그리고 git diff 명령어를 사용하면 마지막 버전과 수정 파일과의 차이점을 보여준다....!!

 

git diff 명령어

 

git log -p 는 log에 git diff내용을 추가한 명령어이다.

로그의 변경 내역을 더 상세하게 출력한다.

 

git log -p 명령어

 

Message 2라는 메세지가 있는 버전으로 돌아가고 싶을 때 git checkout [name] 명령어를 사용한다.

 

git checkout 명령어 이후 상태

 

하지만 Message 3 버전이 지워진건 아니다.

가장 최신으로 돌아가고 싶을 때 git checkout master 명령어를 사용한다.

 

git checkout master

 

그리고 commit 명령어에서 add 명령어를 포함시킬 수도 있는데 해당 옵션이 -a이다.

 

 

버전관리가 안되어 있는 상태에서는 add가 자동으로 되지 않기 때문에 최초 한번은 add가 되어서 tracked 상태가 되어야한다!

 

해당 버전으로 reset 한다는 것은 이 버전을 삭제하는게 아니라 이 버전이 되겠다 라는 의미이다.

git reset --hard는 강력하게 reset 시켜서 수정 파일도 없애는 거다.

수정 파일을 남기고 싶을땐 hard 외에 다른 옵션을 사용한다.

 

git revert는 되돌리는 명령어이다.

R4에서 R3로 되돌리고 싶다면 R4의 아이디를 적어주면된다.

 

reset은 로그가 사라지지만 revert는 기존의 커밋은 내버려두고 저 커밋에서의 변화를 취소한 것이므로 새로운 커밋이 생성되고 해당 파일의 버전은 R3 커밋메시지 버전과 동일하다.

 

git revert 명령어 이후 log

 

R4에서 Message1 부분으로 돌아가고싶다고 해서 Message2의 아이디를 적어서 revert 시키면 충돌이 일어나게 된다.

Message 2는 R4와 R3에 대한 내용을 가지고 있지 않기 때문이다.

해결하는 방법 중에 하나는 revert R4 -> R3 -> Message 2 순으로 revert 시키는 것이다.

 

 

 

git 기본 명령어

 

 

 

 

'Git' 카테고리의 다른 글

GIT - reset & revert  (0) 2021.09.23
GIT - cherry-pick & rebase  (0) 2021.09.22
GIT - branch & conflict  (0) 2021.09.21
GIT - backup  (0) 2021.09.20