코드를 작성하다보면 수정과 삭제가 빈번하게 발생하고, 과거에 삭제한 부분을 살리거나 언제 어느부분을 수정했는지 확인해야할 때 가 있기도 하다. 여러명이서 작업할 때는 소스코드를 여러명이서 수정하고 왜 수정했는지 이유가 필요할 때가 있다. 이를 위해 Git 을 설치하고 사용해보자.
터미널에
git --version 이라고 쳐서 버전이 나오면 다운로드가 되어있는것이다. 안나온다면
Homebrew 를 설치하고 brew install git 을 해서 git을 다운로드하자.
먼저 저장소(repository)을 만들자.
그리고 git status 명령을 실행하자.
git status 는 현재 저장소의 상태를 출력해 준다. 아직 관리되지 않고 있는 파일(Untracked files)들을 보여주고 git add 명령을 이용하여 관리할 파일들을 추가하라고 알려준다.
git add 명령 수행전에 깃으로 관리해야 할 파일들을 고려해야 한다. 직접 작성한 mysite, pybo 디렉토리 등은 깃으로 관리해야 할 대상이 맞지만 .idea, sqlite3 파일은 사용자별, 시스템 별로 달라지기 때문에 깃으로 관리하면 안된다. .idea는 사용자 설정을 저장하는 파이참 전용 파일이고, db.sqlite3 파일은 SQLite의 데이터베이스 파일이다. 예를 들어 여러 명이 같은 저장소에서 작업할 때 .idea 파일을 누군가가 변경한다면 내가 설정했던 파이참 설정 내용이 다른 사람의 것으로 변경될 수 도있다. 이런 문제를 방지하기 위해 .gitignore 파일을 작성해 깃으로 관리하지 않을 대상을 설정해 줘야한다.
projects\mysite\.gitignore 위치에 새로운 파일을 생성하자.
이제 하려던 git add 명령을 해보자.
git add * 명령을 하자.
git add 뒤에 * 을 추가해 명령어를 수행한 이유는 모든 파일을 추가하겠다는 의미이다.
그 후 git status 를 해보자.
이렇게 하면 깃 스테이지 영역에 추가된 파일을 확인할 수 있다. 깃은 저장소에 변경 사항을 바로 저장하지 않고 스테이징 이라는 단계를 거친다. 스테이징은 변경 사항을 저장소에 저장하기 직전 단계에 올려놓는 개념이다. 먼저 git add 로 스테이징에 올려놓고 git commit 으로 스테이지에있는 파일을 저장소에 저장한다.
이제 git commit 명령으로 저장하자.
git commit 명령을 수행하면 먼저 이메일 주소 와 사용자명을 설정하라고 적혀있다. 본인의 이름과 이메일 주소를 사용하자.
그 후 git commit -m '파이보 프로젝트 최초 커밋'
git status 를 하면 잘 적용된것을 볼 수 있다.
그런데 점프 투 장고 저자는 오류가 나지 않았었지만 나는 .gitignore 을 설정 했는데 modified : .gitignore 하면서 오류가 났었는데
git rm -r --cached .
git add .
명령어로 git 의 cache 를 초기화 해주니 해결 되었다.
이제 변경사항이 없고 작업 공간이 깨끗하다는 정보를 확인할 수 있다.
이번엔 base.html 템플릿 파일의 <title> 엘리먼트를 다음과 같이 바꿔보자.
projects\mysite\templates\base.html 를 수정하자.
수정 한 후 git status 명령을 해보자.
수정된것이 있다고 한다.
git diff 를 해보자.
무엇이 수정되었는지 확인할 수 있다.
- 는 삭제된 부분, + 는 추가된 부분이다.
코드의 변경 내역을 되돌리고 싶을 때는 git restore 명령을 수행하면 된다.
파일의 이름은 git status 명령을 했을때 출력된 파일명을 기준으로 적으면 된다. git restore 를 해보면 다시 내용이 복구된것을 확인할 수 있다.
다시 <title>파이보</title> 로 변경하고 git commit 명령을 해보자.
그럼 오류와 함께 git add 명령을 하거나 또는 git commit -a 명령을 하라는 메세지가 나온다. -a 옵션은 커밋할 때 add 명령도 함께 처리하라는 옵션이다.
-a 옵션을 추가해 커밋해보자.
깃으로 커밋한 이력을 확인하려면 git log 명령을 해보자.