Git은 왜 필요할까?
- Git을 사용하면 내가 만들고 있는게 들어있는 폴더의 시간과 차원을 종횡으로 넘나들 수 있다.
- Git은 여러사람들이 프로젝트에서 협업할 수 있도록 도와줌.
Git 명령어 모음
$ git --version
: 깃 버전 확인
$ git init
: 해당 폴더를 깃이 관리하라고 명령
$ git status
: 현재 폴더에서 현재 폴더의 상황을 깃의 관점에서 보여줌
.gitignore
: Git의 관리에서 특정 파일/폴더를 배제해야 할 때 사용
$ git add
: 프로젝트에서 일어난 변화를 타임 캡슐에 담을 때 사용
$ git add 파일명
: 해당 파일
$ git add .
: 모든 파일
$ git commit
: 타임 캡슐 묻기
$ git commit -m "FIRST COMMIT"
: 커밋 메시지까지 함께 작성
$ git commit -am "메시지"
: 새로 추가된 파일(untracked files)이 없을 때만 사용 가능. add와 commit 한번에
$ git log
: 커밋 내용 확인
$ git diff
: 변경사항을 구체적으로 보여줌
- j를 누르면 내려가고, k를 누르면 올라감. :q는 닫기(메시지가 길어지면 항상 vin 모드가 됨)
Reset vs Revert
Reset
- 말 그대로 시간을 과거로 되돌림
- 과거로 돌아가게되면 그 이후의 행적(commit)은 히스토리에서 지워버림
git log
로 되돌아갈 시점의 커밋 해시를 복사(다른 애들과 구분이 될 정도로만 앞의 일부분만 복사해도 됨)한 후
$ git reset --hard (돌아갈 커밋 해시)
를 입력하면 된다
$ git reset --hard
: 뒤에 커밋 해시가 없으면 마지막 커밋을 가리킴. 아직 커밋되지 않은 것들을 다 지우고 마지막 커밋의 상태로 돌아가고 싶을 때 사용
Revert
- 과거로 돌아가면서 그 이후의 행적을 삭제하는게 아니라, 거꾸로 되돌아가는 행적을 다시 넣어줌
- 거꾸로 되돌아가는 행적 하나하나를 기록으로 남길 필요가 있거나, 특정 과거 시점의 내용만 취소해야 하는 경우에 사용
- 한번 공유가 된 코드들은 Reset을 사용하게 되면 협업시 심각한 오류가 생길 수 있다. 따라서 Revert를 사용해야 함
- 되돌릴 것, 즉 취소할 커밋의 해시를 찾아야 함.
$ git revert (되돌릴 커밋 해시)
한 후 vin 창에서 이미 커밋 내용이 적혀 있으니 :wq
로 저장후 나온다.
- 리벌트 한 시점으로 갔을때의 파일을 후에 수정을 한다던가 하는 이유로 충돌이 생기면 과정 진행중 컴퓨터가 어떻게 할지 결정을 못하게 됨. 에러 메시지를 차례로 보면
$ git rm 해당파일
로 문제되는 파일 삭제 후
$ git revert --continue
로 마무리
:wq
로 vin 모드에서 커밋 메시지 저장후 나오기
$ git revert --no-commit (되돌릴 커밋 해시)
이렇게 하면 커밋해버리지 않고 revert 하므로, 원하는 다른 작업을 추가한 다음 함께 커밋 가능.(add만 되어있는 상황)