====== 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}}
----