====== Git 사용하기 ====== 요즘 점차 많이 사용되고 있는 버전관리 시스템인 Git 의 사용법에 대해 설명한다. 리누스 토발즈가 만든 이 Tool 은 리눅스 커널 뿐 아니라, 점점 많은 오픈소스에서 사용되고 있다. 이러한 추세에 따라 별다른 설치 없이도, 리눅스 설치와 함께 자동으로 설치된다. Git 에 대한 여러가지 기능과 사용법이 존재하지만 여기서는 가장 기본적이고 기초적인 그리고 가장 많이 사용되는 것들에 한해서 설명한다. ====== 준비운동 하기 ====== Git 를 이용하려면 몇 가지 정보가 필요하다. Git 에는 분산환경이라는 특성 때문에 사용자 이름과 이메일 주소를 제공하는 중앙 저장소가 없다. git config 명령어를 통해 이름과 이메일 주소를 설정한다. #git config --global user.name "Woojong Kim" #git config --global user.email "realizeadream81@gmail.com" 출력결과 값을 더 잘 보게 하기 위해서 다음과 같이 설정한다. #git config --global color.ui "auto" ====== 로컬에서 사용 시 ====== ===== 저장소 생성하기 ===== 코드를 저장하고, 버전관리를 할 저장소를 만들어보자! 여기서는 /opt/nm 아래에 코드를 관리할 것이다. #mkdir /opt/nm #cd /opt/nm #git init Initialized empty Git repository in /opt/nm/.git/ 해당 디렉토리 아래 .git 디렉토리가 생겼다. ===== 변경하기 ===== 이제 빈 저장소에 파일을 추가해보겠다. networkmanager.c 파일을 생성하고 이를 추가해보겠다. #touch networkmanager.c #git add networkmanager.c #git commit -m "add networkmanager.c file" // -m 옵션으로 커밋로그를 작성한다 [master (root-commit) 5e9ec9b] add networkmanager.c file 1 files changed, 6 insertions(+), 0 deletions(-) create mode 100644 networkmanager.c 커밋이 제대로 되었는지 확인해보자! #git log commit 5e9ec9b57a06d80c84eadf268a4c5aae251d6686 Author: Woojong Kim Date: Sun Nov 4 22:23:37 2012 +0900 add networkmanager.c file ===== 프로젝트를 이용한 작업 시작하기 ===== 추가한 파일을 아래와 같이 수정해보자! #include int main() { printf("Networkmanager main"); return 0; } 그리고 나서 현 상태를 확인해보자! #git status # On branch master # Changed but not updated: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: networkmanager.c # no changes added to commit (use "git add" and/or "git commit -a") 수정된 파일을 추가하자! #git add networkmanager.c #git status # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: networkmanager.c # 이제 커밋 해보자! #git commit -m "add printf in main()" #git log commit 7dede4762a131c3ec5d9be1d5a4a0ad99728726e Author: Woojong Kim Date: Sun Nov 4 23:19:57 2012 +0900 add printf in main() commit 5e9ec9b57a06d80c84eadf268a4c5aae251d6686 Author: Woojong Kim Date: Sun Nov 4 22:23:37 2012 +0900 add networkmanager.c file 그리고 로그를 보면, 앞서 본 입력한 것과 총 2개의 커밋 로그를 볼 수 있다. 여기서 혼동하지 말아야 할 것은 커밋을 하기 전에 수정된 파일을 add 명령어로 추가해주어야 한다는 것이다. ===== 체크아웃 하기 ===== 저장소에 커밋한 파일을 새로운 디렉토리에 체크아웃해보자. 체크아웃할 디렉토리를 만들고, 아래와 같이 실행하여 체크아웃한다. #mkdir /tmp/git #cd /tmp/git #git clone /ssd/git . 위에서 적어준 /ssd/git 는 저장소의 위치다. ====== 원격에서 사용 시 ====== 앞서 설명한 방법의 경우, commit 은 가능하지만, push 는 불가능했다. 따라서 원격에서도 push 가능한 방법을 설명한다. ===== git 서버 ===== 먼저 git 서버에서의 설정은 아래와 같다. #mkdir /git #cd /git #git init --bare ===== git 클라이언트 ===== 클라이언트에서는 git 서버에 접속하여 코드를 check out 한다. 파일 생성 후, push 한다. #git clone root@likewind.org:/git #touch a b c #git add * #git commit -m "insert a b c" #git push ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----