이번 강의는 깃의 비전관리에 대해서 다룬다.
깃에게 특정 디렉토리를 버전관리하도록 시키는 방법
해당 디렉토리로 이동한뒤
git init
을 입력한다.
그러면 .git 디렉토리가 생기게 되고 버전 정보들이 이 디렉토리 안에 있는 파일들에 저장되게 된다. 이 .git 디렉토리를 지우면 우리가 관리하던 버전 관리 정보들은 모두 사라지게 되니 주의하자.
깃은 Staging Area 위에 있는 파일들만 모아서 하나의 버전으로 만들어서 Repository에 넣는다.
cat이라는 명령어는 파일의 내용을 출력해주는 명령어
git status : working tree status
git add : add to staging area
git commit : create version -> repository로 보낸다.
git log : show versions
Untracked 되어 있는 파일들은 깃은 없는 셈 치고 관리를 하지 않는다.
깃의 자세한 명령어들을 알고 싶을때는 구글링을 해보자
ex) git log에서 버전별로 어떤 파일들을 관리하는지 궁금하다면 구글에 git log files list를 쳐본다.
git log --stat : 버전별로 어떤 파일들을 관리하는지 보여준다
git diff : Show changes 마지막 버전과 working tree 사이의 차이점을 보여준다. 버전을 만들기 전에 최종 검토 가능
git reset --hard : 현제 파일들을 마지막 버전의 상태로 되돌린다.
git log -p : 각 버전별로 이전 버전에 비해서 무엇이 달라졌는지 보여준다.
정확한 설명은 아니지만 추후에 배우기로 하고 우선 master브랜치를 가장 최신 버전이라고 생각해보자. 만약 위 상황에서 이전에 만들었던 버전으로 돌아가고 싶다면 어떻게 해야하는가?
Header가 이전의 버전을 가르키게 해야한다.
git cheackout [커밋 아이디 값] : 해당 아이디의 커밋 버전으로 돌아간다.
git cheackout master : 가장 최근의 상태를 불러온다.
git add . , git add src : 현제 디렉토링 아래의 모든 파일을 add 한다, src 디렉토리 아래의 모든 파일을 add 한다.
git commit -am "" : add와 commit을 동시에 한다. (Untracked 파일들은 add 해주지 않는다.)
git commit : 기본 에디터가 쓰고 그 에디터에 커밋 메시지를 직접 작성할 수 있다. 여러줄의 커밋 메세지를 만들고자 할 때 유용하다.
change git default text editor 검색
git config --global core.editor "[에디터이름]" : 깃이 기본적으로 쓰고 있는 디폴트 에디터를 바꾼다.
버전 삭제
위 상태에서 메세지 3을 지우고 메세지 2가 되고 싶다면 메세지 2로 리셋을 해야한다.
git reset --hard [아이디] : 아이디의 버전으로 리셋한다.
git reset --help : 다양한 모드들에 대한 설명이 나온다. hard가 아닌 soft나 mixed를 쓰면 최신 버전을 지우면서 내가 현제 작업중인 상태는 리셋하지 않을 수 있다.
만약 협업 중에는 다른 사람과 공유된 버전에 대해서는 리셋하면 안된다. 공유 되기 전 단계인 저번에 대해서만 리셋 해야한다.
R4를 삭제하고 R3가 되고 싶다면 reset을 쓰면 된다.
하지만 R4를 삭제 하지 않고 그냥 버전을 바로 이전 버전으로 되돌아가고 싶다면
git revert [현제 사용하는 버전의 아이디] : 바로 이전의 버전으로 파일들을 되돌린 새로운 버전을 만든다.
R4는 남아 있지만 R4에서 일어난 변화들이 취소된(즉 R3와 똑같은 상태인) 새로운 ㄲRevert "R4" 버전이 생긴다.
한 단계식 이전 버전으로 돌아가기 때문에 한참 전 버전으로 돌아가려면 하나씩 일일히 돌아가야한다.
버전관리의 핵심은 비교이다.
.gitignore에 무시하고 싶은 파일의 이름을 적으면 해당 파일들은 버전관리를 해주지 않는다.
branch는 우리의 저장소가 평행 우주처럼 여러 상황이 공존할 수 있게 해준다.
커밋 아이디 대신에 tag를 이용할 수 도 있다.
backup은 매우 중요하다.
배운 깃 명령어들 정리
git init
git status : working tree status
git add : add to staging area
git commit : create version -> repository로 보낸다.
git log : show versions
git log --stat : 버전별로 어떤 파일들을 관리하는지 보여준다
git diff : Show changes 마지막 버전과 working tree 사이의 차이점을 보여준다. 버전을 만들기 전에 최종 검토 가능
git reset --hard : 현제 파일들을 마지막 버전의 상태로 되돌린다.
git log -p : 각 버전별로 이전 버전에 비해서 무엇이 달라졌는지 보여준다.
git cheackout [커밋 아이디 값] : 해당 아이디의 커밋 버전으로 돌아간다.
git cheackout master : 가장 최근의 상태를 불러온다.
git add . , git add src : 현제 디렉토링 아래의 모든 파일을 add 한다, src 디렉토리 아래의 모든 파일을 add 한다.
git commit -am "" : add와 commit을 동시에 한다. (Untracked 파일들은 add 해주지 않는다.)
git commit : 기본 에디터가 쓰고 그 에디터에 커밋 메시지를 직접 작성할 수 있다. 여러줄의 커밋 메세지를 만들고자 할 때 유용하다.
git config --global core.editor "[에디터이름]" : 깃이 기본적으로 쓰고 있는 디폴트 에디터를 바꾼다.
git reset --hard [아이디] : 아이디의 버전으로 리셋한다.
git reset --help : 다양한 모드들에 대한 설명이 나온다. hard가 아닌 soft나 mixed를 쓰면 최신 버전을 지우면서 내가 현제 작업중인 상태는 리셋하지 않을 수 있다.
git revert [현제 사용하는 버전의 아이디] : 바로 이전의 버전으로 파일들을 되돌린 새로운 버전을 만든다.