깃으로 버전 관리하기
1. 깃 저장소 만들기
- 깃 초기화 하기
$ git init
cd
를 이용하여 저장소를 만들고 싶은 디렉터리로 이동한 뒤$ git init
을 입력하게 되면 깃을 사용할 수 있도록 디렉터리를 초기화하게 됩니다.
$ git init 디렉터리이름
init 다음에 디렉터리 이름을 입력하면 새로운 디렉터리를 만들고 그곳에서 저장소를 초기화하는 과정을 한꺼번에 처리할 수 있습니다.
2. 버전 만들기
스테이지와 커밋 이해하기
이름 | 설명 |
---|---|
작업트리 | 파일 수정, 저장 등의 작업을 하는 디렉터리 |
스테이지 | 버전으로 만들 파일이 대기하는 곳, 스테이징영역이라고도 함. |
저장소 | 스테이지에서 대기하고 있던 파일들이 버전으로 만들어 저장하는 곳 |
스테이지와 저장소는 눈에 보이지 않고 깃을 초기화했을 때 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재하는 영역입니다.
- 파일 문서를 수정하고 저장하면 그 파일은 작업 트리에 있게 됩니다.
- 이 파일을 버전으로 만들고 싶을 때 스테이지에 넣습니다.
- 버전을 만들기 위해 깃에게 ‘커밋(commit)’명령을 내립니다.
- 커밋 명령을 내리면 새로운 버전이 생성되면서 스테이지에 대기하던 파일이 모두 저장소에 저장됩니다.
status, add, commit
$ git status
깃의 상태를 확인합니다. 기본적인 상태라면 다음과 같은 메시지가 표시됩니다.
On branch master : 현재 master 브랜치에 있습니다.
No commits yet : 아직 커밋한 파일이 없습니다.
nothing to commit : 현재 커밋할 파일이 없습니다.
$ git add 파일명 // 파일명 대신 . 입력시 전체 스테이징
파일을 스테이지에 올려줍니다.
$ git commit -m"message"
스테이지에 있는 것들을 버전으로 만들게 됩니다. 커밋할 때는 그 버전에 어떤 변경 사항이 있는지 확인하기 위해 메시지를 함께 기록합니다.
$git commit -am"message"
add와 commit을 한번에 수행할 수 있습니다. 단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있습니다.
$ git commit --amend
가장 최근의 커밋 메시지를 수정할 수 있습니다.
3. 커밋 내용 확인하기
log, diff
$ git log
저장소에 저장된 버전을 확인할 수 있습니다.
$ git diff
작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교할 수 있습니다.
4. 버전 만드는 단계마다 파일 상태 알아보기
tracked 파일과 untracked 파일
작업트리에 있는 파일은 크게 tracked 상태와 untracked 상태로 나뉩니다.
분류|설명 —|— tracked 파일| 깃에서 추적하고 있다는 뜻 untracked 파일| 한 번도 깃에서 버전관리를 하지 않았다는 뜻
버전을 만드는 과정에서 $ git status
입력시 나타나는 내용
분류 | 설명 |
---|---|
changes not staged for commit | 변경된 파일이 아직 스테이지에 올라가지 않았다는 뜻 |
changes to be committed | 스테이지에 올라와있다는 뜻 |
working tree clean | 현재 작업트리에 있는 모든 파일의 상태가 unmodified상태 |
5. 작업 되돌리기
작업 트리에서 수정한 파일 되돌리기
$ git checkout
파일을 수정했지만 아직 스테이징 하지 않았다면 checkout으로 잡업 트리 변경 사항을 취소할 수 있습니다.
스테이징 되돌리기
$ git reset HEAD 파일명 // 파일명 미지정시 스테이지 모든 파일 되돌림.
스테이지에 있는 파일을 되돌립니다.
최신 커밋 되돌리기
$ git reset HEAD^
최신 커밋이 취소되고 스테이징도 함께 취소됩니다.
reset 명령의 옵션
명령 | 설명 |
---|---|
–soft HEAD^ | 최근 커밋을 하기 전상태로 작업 트리 되돌리기 |
–mixed HEAD^ | 최신 커밋과 스테이징을 하기 전 상태로 작업 트리 되돌리기, 옵션없이 git reset HEAD^과 같음 |
–hard HEAD^ | 최신 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리 되돌리기 |
특정 커밋으로 되돌리기
git reset 커밋해시
해당 커밋 이후에 만들었던 커밋을 삭제하고, 해당 커밋으로 이동합니다. 이후의 커밋은 파일에만 저장됩니다. –hard 커밋해시 사용시 파일에도 삭제
커밋 삭제하지 않고 되돌리기
git revert 커밋해시 // 여러개의 경우 커밋해시..커밋해시
해당 커밋을 취소하고 새 커밋을 생성합니다. 해당 커밋은 삭제되지 않고, 새 커밋은 해당 커밋이 변경했던 이력을 취소한 새로운 커밋입니다.