+Main +View +Log +Dev +Thanks  +promsoft  +With  +Join +Login
GIT 사용법
written by prom at 2011.12.23
간략한 사용법 요약.

Settings
.bashrc에 아래내용추가 (위에 두줄은 본인것으로)

# for GIT
USER_NAME='YOURNAME'
USER_EMAIL='YOUREMAIL'
GIT_AUTHOR_NAME=${USER_NAME}
GIT_AUTHOR_EMAIL=${USER_EMAIL}
GIT_COMMITTER_NAME=${USER_NAME}
GIT_COMMITTER_EMAIL=${USER_EMAIL}
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL

home directory에 .gitconfig 파일 생성해서 아래내용 복사
[color]
branch = auto
diff = auto
status = auto
commit = auto
[core]
editor = vim

color는 branch / diff / status / commit 했을때 색을 알록달록해주는 옵션이다.
눈에 물음표달고있지말고 ?_? 직접해보라!
core에 옵션이 뭐가 더있는지 나는 모르겠다!
에디터만 바꿨다.


repository 받아오기
# git clone [ID]@[PATH]

뒤에 path는 protocol에 따라 좀 달라짐니다.
git, http, ssh등 사용가능


repository 상태보기
# git status

Changes to be committed
add된 파일들

Changed but not updated
수정했지만 커밋되지 않을 파일들

Untracked files
git repository에 등록되지 않은 파일들

commit하기전에 요거 한번 확인안하고 기냥 이거저거 다올리는 사람 의외로 많다. 확 그냥~

repository 최신상태로 (update된 commit을 받아옴)
# git pull
conflict를 예방하기 위하여 작업하기전에 항상 pull을 하고 작업을 시작함

혼자 pull안땡기고 꾿꾿하게 작업사람도 의외로 많다.
그러다 나중에 커밋이안된다고 징징대고말이야


pull했을때 conflict 났을경우
# git stash
local repository의 patch를 저장하고 해당 branch의 HEAD상태로 reset

# git pull
update된 commit을 받아옴

# git stash apply
local repository의 patch를 다시 적용

같은 파일 수정시 conflict 날 가능성 있음
무작정 따라 했다가 쫑나도 난 책임따윈안짐 :0
참고는 저는 말이죠. stash 하기전에 patch를 떠놓는 습관이 있슴니다.
# git diff > work.patch
그리고선 쫑나면
# git reset --hard 최신커밋ID
# patch -p1 < work.patch
요런식으로 리커버리.
읭? 그래도 안된다구요? 알아서 하세요 :)


작업내용 commit 과정
# git status
commit할 파일들 확인

# git pull
conflict를 예방하기 위하여 repository를 최신상태로 만듬

모든파일을 commit할 경우
# git commit -a -s

특정파일만 commit할 경우
# git add [file]
위 명령으로 파일을 add한 후에
# git commit -s

commit message창에서 commit내용을 자세히 기술후 저장하고 나옴

# git push
commit내용 repository에 반영

난 시어머니같은 개발자니까 한 마디더 보태자면
커밋의 기본단위는 하나의 주제인거에요
예를 들어 a b c d 모듈을 개발한다고 쳐요.
하루종일 빡세게 굴러서 a b 모듈 개발을 완료하고 기분좋게 커밋을 해요.
"2011년 12월 23일 작업"
... 이러시면 안되는거에요.
a 모듈개발 끝나면 "a 모듈 작업"
b 모듈개발 끝나면 "b 모듈 작업" 이렇게 두개의 커밋으로 올리는거에요.
가끔 그런사람도 있어요. 한참 작업하다가 뭐가 잘안되 근데 커밋을 안하면 일을 안하는거 같으니까
일단 "작업중" 이라고 커밋해서 올리고 집에가요.
다른사람이 땡겨서 뭐좀할려고 하는데 빌드가 안되요. ㅜ
작업중인건 올리면 안되는거에요. 다끝나고 올리는거에요.
하나도 안애매해요. 상식대로만 하면 되는거에요.


commit Log 보기
# git log

파일관련
이동
# git mv [file]

삭제
# git rm [file]

shell에서 사용하는 옵션들도 사용가능하다. -f / -r 요딴거~

파일원래 상태로 되돌리기 (복원불가능하니 신중히)
# git checkout [file]

repository를 특정 commit으로 reset하기 (수정한 내용 저장안됨 백업은 알아서)
# git reset --hard [commit ID]

끝!

+
이외에도 많이 사용하는 명령어가 많지만.
rebase라던가 branch라던가
요딴 명령어 쓸 필요가 생길정도면 그대는 이미 파워유자!
격에 맞게 help를 참고하라~
+Track Back
NO.1 쯔엉 2011.12.23
어머 텔레파시갓나봐
안그래도 알려달라고 할 참이엇는데
NO.0 prom 2011.12.24
노원쯔엉님을위하여 자세한설명을 추가했어요
박수를 박수박수치세요~
+Other Posting
> GIT 사용법  ..2 2011-12-23
git am  ..1 2010-11-19
Do While 0 2010-11-04
u-boot-samsung  ..2 2009-09-14
on LWN  ..1 2009-06-17
IPL Debugging  ..2 2009-05-30
How many contributions?  ..2 2009-04-27
sysfs and udev 2009-04-10
s3c64xx: fix the wrong gpio offset  ..1 2009-04-06
cmd_mmc: add support device command for selecting  ..2 2009-04-06
모듈간 심볼참조 (Module.symvers)  ..1 2009-03-10
TrackBack 구현하기  ..1 2009-02-28
bootm: Reduce the unnecessary memmove  ..4 2009-02-23
Boot tracer 2009-02-18
proc에 대하여  ..1 2009-02-11
mysql  ..2 2009-01-12
S3C6410 USB Controller  ..1 2008-11-30
OMAP3 USB on u-boot #2 2008-11-24
useful site (for Linux)  ..1 2008-11-17
OMAP3 USB on u-boot #1  ..2 2008-11-03
gadgetfs 버그잡기 2008-09-09
ALSA Library cross compile 2008-07-29
LibUSB-Win32 #2 2008-07-10
Linux Kernel Map 2008-07-02
LibUSB-Win32 2008-06-19
Porting Sequence 2008-02-14
Linux Porting 2008-02-01
How to Modify the Ramdisk 2008-01-14
RuBee 2007-08-20
MS Surface 2007-06-14
내가 IT를 그만둔 이유  ..1 2007-06-12
USB 세미나 자료 2007-04-02
gcc 2007-01-29
대학원면접문제?  ..2 2006-12-03
RTP 2006-04-13
IOCP  ..3 2006-03-22
컴공개그-_-  ..2 2006-03-11
VxWorks 관련자료  ..2 2006-02-09
2004 응용DB 기말고사  ..3 2005-06-06
GNU C Library 2005-05-25
vi에디터 사용법  ..4 2005-03-08
CAPCOM의 오카모토 요시키씨의 강의내용  ..4 2005-02-22
Collision Detection 2005-02-13
디자인패턴 소개  ..7 2005-02-09
BREW 단말기 스팩 2005-02-03
STL  ..3 2005-01-15
C++ 간단정리  ..5 2005-01-15