프로그래밍 관련 도구/Git

Git(git init,add,status,commit,log,diff,reset 정리)

benjykim 2017. 7. 28. 20:51
반응형

1. git init


현재 디렉토리를 git의 (버전)저장소로 만듭니다. 

(= 현재 디텍터리에 작업을 진행하겠다.)


-> .git 생성되는 것을 확인


git은 버전관리를 하게되면 여러가지 정보들이 생성되고 생성된 정보들이 git 디렉터리안에 저장이 된다.



2. git add


git은 기본적으로 새로운 파일을 관리하지 않는다. 

파일을 관리하기 위해서는 관리 대상으로 등록을 해야한다.


따라서 새로운 혹은 수정된 파일을 만들면 깃에게 add명령을 해서 파일을 관리하라고 말해줘야한다.


git add를 실행하면 untracked file이 new file로 변경된다


Q. 왜 이런 기능이 필요한가?

-> 우리가 프로젝트를 하다보면 프로젝트의 핵심적인 파일이 있고

그 프로젝트를 개발할 때 테스트 하기 위한 임시 파일이 있는데

임시 파일은 버전관리를 하면 안되기 때문에 이러한 명령이 있는 것이다.

(즉, 버전을 관리해야하는 파일과 관리하지 않는 파일을 구분하기 위해서)


EX) f1.txt와 f2.txt 파일 모두 수정하고 git add f1.txt만 한다면 

f1.txt는 커밋 대기상태로 들어간다.(f2.txt는 아님.)


커밋 대기상태 : stage area라고 부른다. 

즉, 커밋하면 stage위에 있는 파일들이 커밋되는 것임.


repository : 커밋된 파일들이 가는 곳.(추후에 stage와 repository를 더 자세히 정리하도록 하겠습니다.)


3. git status


프로젝트 폴더의 상태를 확인한다.


4. git commit 


마무리된 작업에 버전에 관련된 메세지를 기록해서 저장소로 보내는 행위. 

즉, staging area에 tracked 된 파일들을 저장소에 저장하는 것을 의미한다.


현재 버전의 메세지를 적어준다.(commit message)

각각의 커밋은 자신만의 고유한 주소(commit ID)를 가진다. (commit ID는 git log하면 볼 수 있음.)


(git commit -a : 수정한 파일을 자동으로 스테이지에 올린다.)

(git commit -am "ver1.0": 에디터를 띄우지 않고 메세지를 바로 작성해서 커밋한다.)


5. git log


버전이 잘 만들었는지 확인하는 명령어(역사를 확인하는 명령어)

*git log -p : 각각의 커밋과 커밋사이의 소스상의 차이를 볼 수 있다.


6. git diff


두 커밋 사이의 차이점을 알고 싶을 때 사용


EX) git diff f6aafbbb38bec84947611539f039160e5f12f877 e511bd68d90595c208ba5da5cf0722114282ca66

(git diff "commit ID_1" "commit ID_2")


EX) f1.txt 파일을 수정한 뒤 git diff 를 한다면 수정한 내용을 바로 볼 수 있다

     즉, 내가 혹시 실수하지 않았는지 확인할 수 있다.


7. git reset


현재의 로그를 취소해서 과거로 돌아가고싶을 경우 사용


EX) git reset "commit 고유 아이디" --hard(hard말고 soft등 다른 옵션들도 있다. 차차 정리해서 올릴 예정)


위 명령어를 하면 원하는 지점으로 버전을 되돌릴 수 있다. (reset하면 눈에 안보이지만 복구할 수 있음.)

하지만 git에서는 웬만하면 어떠한 정보도 삭제하지 않아야한다.






*이 포스트는 이고잉님의 '지옥에서 온 Git'강의를 참고하여 작성했습니다.

URL : https://opentutorials.org/course/2708



반응형

'프로그래밍 관련 도구 > Git' 카테고리의 다른 글

Git(branch 정리)  (0) 2017.08.02
Git(git status의 원리)  (0) 2017.07.30
Git(git commit의 원리)  (0) 2017.07.30
Git(objects 파일명의 원리)  (0) 2017.07.30
Git(git add의 원리)  (0) 2017.07.30