Git 도 비교적 버전업이 자주 되는 편이다.
업그레이드를 할 필요성이 종종 있는데, 그 과정은 그냥 설치과정과 같다.

여기에서는 소스로 설치하는 과정에 대해서만 살펴보겠다.


1. 최신 버전 확인

http://www.git-scm.com/

사이트에 들어가서 최신 릴리즈 버전이 얼마인지 확인한다.

2. 소스 다운로드

 

$ git --version
$ wget http://git-core.googlecode.com/files/git-1.7.9.tar.gz

3. Install

$ tar zxvf git-1.7.9.tar.gz
$ cd ./git-1.7.9
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

사실은 그냥 최신 버전이 있는 것 확인해서 다시 그대로 설치하면 된다 ^^

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Log - git log  (2) 2012.02.14
Move file - git mv  (0) 2012.02.13
Remove file - git rm  (0) 2012.02.12
Git Remote Repository (git init --bare)  (0) 2012.02.11
Undo - Unmodify (변경 취소 - git checkout --)  (0) 2012.02.08

파일을 삭제하는 경우에 대해서 알아보자.


파일을 삭제하는 경우를 테스트 해보기 위해서 미리 삭제용 파일 3개를 넣어놓았다. ^^


1. rm


$ rm rm_test.txt
$ git add rm_test.txt
$ git commit -m "rm rm_test.txt"

git 으로 관리를 하던 파일을 그냥 삭제를 하게 되면 git 은 어떻게 받아들일까?
위 스크린샷을 보면 알겠지만, 그냥 알아서 변화된 사항을 잘 받아들인다.
그러므로, 그냥 'git add' 후 'git commit'을 해주면 된다.

위에서는 'add + commit = commit -a" 으로 처리를 했다 ^^


2. git rm


$ git rm rm_test2.txt
$ git commit -m "rm rm_test2.txt"

git 에서는 삭제를 위한 옵션을 제공을 해준다.
이를 이용하면 삭제와 staging을 한 번에 처리를 할 수가 있다.
이를 상태 그래프로 보면 아래와 같다.


즉, [ rm + add = git rm ] 이다.


3. git rm --cached


$ git rm --cached rm_test3.txt
$ git commit -m "rm --cached rm_test3.txt"

이번에는 조금 특수한 경우이다.

Git 에서는 지우고 싶은데, 지금 작업할 때에는 남겨두고 싶은 경우이다.
즉, 지금 당장 파일은 지우기 싫은데, git 에서는 삭제를 해놓고 싶은 경우에 이렇게 하면 된다.

위 스크린샷을 보면, git rm을 했음에도 실제 파일은 삭제가 되지 않았고,
그러다 보니 git 에서는 untracked 파일이 존재하고 있다고 인지하고 있게 된다.


4. Pattern

쉘 상에서 rm을 사용할 때와 마찬가지로 'git rm'에서도 glob 패턴 등을 그대로 사용할 수 있다.
다만, "*"를 사용할 때에 조금 조심해야 한다.

$ git rm \*~
$ git rm ./out/\*.o

위와 같이 "*" 앞에는 백슬레쉬를 붙여주어야 한다.
이는 백슬레쉬 없이 그냥 "*"를 사용할 경우 Git이 다른 식으로 인식을 하기에 조금 주의를 해야한다.


반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Move file - git mv  (0) 2012.02.13
Upgrade GIt (in Ubuntu)  (0) 2012.02.13
Git Remote Repository (git init --bare)  (0) 2012.02.11
Undo - Unmodify (변경 취소 - git checkout --)  (0) 2012.02.08
Undo - Unstaging (등록 취소 - git reset HEAD)  (0) 2012.02.07

Git 에 대해서 알아보게 되면 가장 많이 듣게 되는 말이 "분산 개발"이라는 것이다.
이를 가능하게 하는 것이 바로, 서버와 클라이언트가 똑같은 데이터를 갖게 해주는 방법이다.


그런데, Git 에서 생성할 수 있는 repository는 앞에서 잠깐 설명한바와 같이 두 가지가 있다.

   - bare repository
   - work(non-bare) repository

두 가지 모두 같은 데이터를 갖고 있지만, 둘은 분명 다른 목적을 가지고 있다.



bare repository

서버의 역할을 위해서 만들어지는 repository이다.
repository를 bare로 만들게 되면 그 안에서는 수정 작업 등을 할 수 없다.


work (non-bare) repository

수정 등의 실제 업무를 위해서 만들어지는 repository이다.



work(non-bare) repository 생성하는 것은 앞에서 살펴보았고,
여기에서는 bare repository를 생성하는 것을 살펴보도록 하겠다.


$ cd /srv/repository
$ mkdir ./BareRepo.git
$ cd ./BareRepo.git
$ git init --bare


일단, 이렇게 bare repository를 생성은 했는데,
이것을 어떻게 활용하여야 하는지에 대해서는 보다 더 많은 것을 알아보아야 한다.


즉, bare repository는 서버로 사용하겠다는 것인데,
그러기 위해서는 다음에 대한 것들을 더 알아보아야 한다.

   - 프로토콜
   - 계정 관리 (권한)


다음에 bare repository를 이용해서 작업을 하는 것에 대해서 알아보도록 하겠다.

반응형

소스 수정을 했는데 그냥 다시 원위치를 시키고 싶을 경우 어떻게 해야할까?

즉, 저장소에서 가져와서 소스를 막 손을 댔는데,
처음 가져온 상태로 되돌리고 싶을 경우를 말하는 것이다.


 $ git checkout -- ./aviParser.py

위 스크린샷을 보고 설명을 해보겠다.

   - "readme.txt" 파일은 수정 후 commit을 하기 위해서 add를 해놓은 staged 상태이다.
   - "aviParser.py" 파일은 내용을 수정만 해놓은 상태이다.
   - 이 때, "aviParser.py" 파일의 수정한 내용을 취소하고 싶을 경우,
   - [git checkout -- ./aviParser.py]라고 하면, 원위치가 된다.


그런데, 스크린샷을 잘 살펴보면 알 수 있겠지만,
git은 친절하게도 우리가 원하는 것을 다 알려주고 있다.

안내 멘트만 잘 확인하면 별도로 매뉴얼이 필요 없을 정도이다.


다만, 이러한 것들을 위해서는 Git 버전이 1.6.1 이상이어야 한다.
오래된 버전을 사용하고 있다면, 당장 업그레이드를 추천한다!!!



앞에서 살펴본 것과 같이 Undo 기능에 대한 cycle 그래프를 그려보면 아래와 같을 것 같다.


반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Remove file - git rm  (0) 2012.02.12
Git Remote Repository (git init --bare)  (0) 2012.02.11
Undo - Unstaging (등록 취소 - git reset HEAD)  (0) 2012.02.07
Git 도우미 - TortoiseGit (in Windows)  (0) 2012.02.05
One Shot - commit  (2) 2012.01.22

Git 에서 commit을 하기 위해서는 그 이전에 staged 상태로 만들어야 한다고 앞서서 말했다.
즉, "git add"를 먼저 해야하는 것이다.

"git add"는 하나의 파일만 할 수도 있고, 다수의 파일을 할 수도 있다.

이럴 때에 만약, "git add ."를 통해서 다수의 파일을 staged 상태로 했는데,
그 중에서 특정 파일을 제외하고 싶을 때에는 어떻게 해야할까?



우선은 소스 파일의 2개를 수정해보았다.
위 이미지를 보면 "aviParser.py", "readme.txt" 2개의 파일을 수정해 놓은 상태이다.


수정을 한 파일들 일체를 한 번에 일괄 staged 상태로 만들어보자.

 $ git add .


수정 후 staged 상태로 만든 파일들 중에서 "aviParser.py" 파일을 unstaged 상태로 만들고 싶은 상황이라면,
"git reset HEAD 해당파일" 명령어를 입력하면 된다.

 $ git reset HEAD ./aviParser.py

지금 상황(status)을 보면 "aviParser.py" 파일이 unstaged 상태로 된 것을 확인할 수 있을 것이다.


"git reset HEAD" 명령어는 해당 파일을 "staged" 상태에서 "unstaged" 상태로만 변경시킨다.
파일 자체에 대해서는 어떤 변경도 가하지 않는다.
 
반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Git Remote Repository (git init --bare)  (0) 2012.02.11
Undo - Unmodify (변경 취소 - git checkout --)  (0) 2012.02.08
Git 도우미 - TortoiseGit (in Windows)  (0) 2012.02.05
One Shot - commit  (2) 2012.01.22
git Review - stage, add, commit  (0) 2012.01.19

Windows 환경에서 Git을 보다 편하게 사용하기 위한 도구 중에서 가장 유명한 것이 바로 TortoiseGit이다.
Subversion의 도우미로써 엄청난 인기를 끌었던 TortoiseSvn을 Git을 위한 것으로 수정한 도구이다.

http://code.google.com/p/tortoisegit/

# 미리 알아두어야 할 사항들... (위 스크린샷에 적혀있는 내용이다)

   - TortoiseGit을 설치하기 전에 1.6.1 버전 이상의 Git을 미리 설치해야 한다.
   - 되도록이면 1.7.6 버전을 추천한단다.
   - 1.7.3.0 버전 부터는 64bit 버전에 32bit explorer extension을 포함하고 있다.
   - 1.7.0 버전부터는 Win2K를 더이상 지원하지 않는다.
   - 만약 Win2K 환경에서 1.6.5 이하의 버전을 사용한다면, TortoiseGit을 설치하기 전에 GDI+를 먼저 설치해야 한다.

Downloads 탭을 선택 후 알맞은 환경에 맞는 것으로 선택을 하면 된다.
나의 경우에는 WindowsXP 32bit 버전이기에 그에 맞는 "TortoiseGit-1.7.6.0-32bit.msi"를 선택하였다.

설치 과정에 만나는 첫번째 관문!!!
사용할 SSH를 골라라~!

추천하는 것이기도 하고 개인적인 생각으로도 Windows 환경에서는 putty를 사용하는 것이 편하다.

나머지는 그냥 언제나 Next ^^

업그레이드도 아닌데, 번거로우니 Changelog는 생략하자 ^^

TortoiseGit의 환경설정을 한 번 살펴보자

다양한 설정을 할 수 있는 것을 볼 수 있다.
안타깝게도 기본적으로 언어는 English밖에 안된다.
그런데, Korean을 지원을 해도 English를 사용하는 것이 좋다.
한글로 하면 오히려 더 햇갈릴 수도...

폴더에서 오른쪽 버튼을 누르면 메뉴에서 Git과 관련된 명령어들이 추가된 것을 볼 수 있을 것이다.
즉, 필요하면 여기서 바로 "git clone"을 할 수 있다!



보다 더 필요한 사항들은 나중에 기회가 되면 보충해보겠다 ^^

지금은 졸려서...

반응형

내가 몸담고 있는 회사에서 주로 사용하는 소프트웨어 형상관리 도구는 다음과 같다.

- IBM 의 ClearCase
- Perforce
- Git
- Subversion
그 중에서 Perforce의 설치에 대해서 기록해보고자 한다.
(in Ubuntu 11.10)

 
1. 준비하기

perforce를 설치하고자 하는 디렉토리를 준비하고,
서버 구동에 필요한 패키지를 하나 설치하자.


$ cd /srv/install
$ mkdir ./perforce
$ sudo apt-get install daemon

 


2. 다운로드


Perforce 바이너리들을 다운로드 받자


$ cd /srv/install/perforce
$ wget http://www.perforce.com/downloads/perforce/r11.1/bin.linux26x86/p4d
$ wget http://www.perforce.com/downloads/perforce/r11.1/bin.linux26x86/p4



 

3. 실행 권한


다운로드 받은 파일들에 실행 권한을 주자


$ cd /srv/install/perforce
$ chmod +x ./p4*



 

4. 계정 생성


Perforce를 위한 계정과 그룹을 생성하자


$ sudo addgroup p4admin
$ sudo adduser perforce


root 권한을 사용할 수 있도록 sudoers 에 포함시키자.



$ sudo nano /etc/sudoers
...
perforce   ALL=(ALL:ALL) ALL
...
$ sudo su perforce



5. 경로 설정



Perforce 실행 파일들을 사용할 수 있도록 경로를 포함시키자



$ nano ~/.bashrc
...
export PATH=/srv/install/perforce:$PATH
...
$ source ~/.bashrc



6. 디렉토리 생성



리퍼지토리 디렉토리와 로그들을 저장할 디렉토리를 생성하자.


$ sudo mkdir /srv/repository/perforce
$ sudo chown perforce.p4admin /srv/repository/perforce
$ sudo mkdir /var/log/perforce
$ sudo chown perforce.p4admin /var/log/perforce



7. 환경 변수 설정



사용자들이 Perforce를 잘 사용하기 위해 환경 변수를 설정하자.



$ sudo nano /etc/profile
...
# Perforce Settings
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4PORT=localhost:1666
export P4ROOT=/srv/repository/perforce
export P4USER=perforce
...
$ source /etc/profile



8. 실행 스크립트



부팅 時 자동으로 실행하도록 하기 위한 스크립트를 생성하자.



$ sudo nano /etc/init.d/perforce
#!/bin/sh -e

export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4PORT=localhost:1666
export P4ROOT=/srv/repository/perforce
export P4USER=perforce

export PATH=/srv/install/perforce:$PATH

. /lib/lsb/init-functions

p4start="p4d -d"
p4stop="p4 admin stop"
p4user=perforce

case "$1" in
start)
        log_action_begin_msg "Starting Perforce Server"
        daemon -u $p4user $p4start;
        ;;

stop)
        log_action_begin_msg "Stopping Perforce Server"
        daemon -u $p4user $p4stop;
        ;;

restart)
        log_action_begin_msg "Restarting Perforce Server"
        log_action_begin_msg "   - Stopping Perforce Server"
        daemon -u $p4user $p4stop;
        log_action_begin_msg "   - Starting Perforce Server"
        daemon -u $p4user $p4start;
        ;;

*)
        echo "Usage: /etc/init.d/perforce (start|stop|restart)"
        exit 1
        ;;

esac
exit 0



$ sudo chmod +x /etc/init.d/perforce
$ sudo update-rc.d perforce defaults
$ sudo /etc/init.d/perforce start




여기까지 해서.... Perforce의 서버 설치 과정을 마치겠다.
아웅 졸려~
반응형

이번에 소개할 내용은 일단 알려는 드리지만, 절대 추천하지 않는 명령어(옵션?) 이다.

파일을 수정한 이후 git에 등록하기 위해서는 add를 통하여 staged 상태로 만든 후 commit을 해야한다.
그런데, 이러한 과정이 귀찮다면?


1. git commit -a

   - 소스 파일을 수정한 이후 add 과정 없이 바로 commit을 통해서 한 번에 처리할 수 있다.
   - commit의 옵션 중 '-a'를 사용하면 된다.


   - '-m' 옵션은 앞에서 살펴본 바와 같이 주석을 바로 적어주고 싶을 때 사용하는 옵션이다.


   - add 작업과 commit 작업을 합쳐서 한 번에 할 수 있는 것이다.



[ 주의사항 ]

새로운 파일을 등록할 때에도 'git add'를 사용한다.
그렇다면, 새로운 파일을 등록하고 commit을 할 때에도 'git commit -a'를 사용해도 될까?

답은 "안된다!" ^^




하지만, 이는 결코 추천하지 않는 방법이다.
그 이유는 무엇을 commit 하는지 명시하지 않는 방법이기 때문이다.
이는 종종 원하지 않는 것까지 commit을 하는 실수를 범한다.

무엇을 commit할 것인지 제대로 확인하지 않고 그냥 편의만 추구하는 것은
형상관리의 영속성을 해치는 가장 큰 악습 중 하나이다!!!!

이러한 방법이 있는 것만 확인하고 사용하지는 않기를 바란다~!!!
(그러면서 알려준다는 것 자체가 죄악인데... ^^)

반응형

+ Recent posts