회사에서GIT를 통해 버전관리를 하려고 도입단계입니다. 콘솔버전을 ' GIT, 분산버전 관리시스템'책으로 배우고 있습니다. 책이 너무 어렵고 쌩 초보라 포기하려던 순간인데 tortoise는 책에도 나오지 않았던건데 처음 접하네요. 신세계네요. 그런데 강의를 보니 Console보다 tortoise가 더 편해보이는데 따로 console을 사용하는 이유는 뭘까요?프로그램에 ㅍ도 모르는 관광전공자인데 부장님께서 시키시네요. ㅠㅠ 흑흑
[ Git Cheat Sheet ]git명령어가 궁금하면 git 명령어 --help 한다.shell> git command --helpglobal git설정 파일 : $HOME/.gitconfig(git config --help)
* Create1. 기존 데이타를 가져올 때,cd ~/projects/myprojectgit initgit add2. repo(기존 저장소)로부터 가져올 때,git clone ~/existing/repo ~/new/repogit clone git://host.org/project.gitgit clone ssh://you@host.org/proj.git
* Show(보기)표기법: $id는 커밋id, 태그명, branch 표기, $file는 임의의 파일, $branch는 임의의 branch name
1. 작업 디렉토리의 변경된 파일보기git status2. 트랙(modified와 staged) 변경내역 보기git diff3. $ID1과 $ID2(두 파일) 사이의 변경된 내용 비교하기git diff $id1 $id24. 변경 내역git log5. 파일의 트랙변경과 히스토리 보기git log -p $file $dir/ec/tory/6. 누가, 언제, 무엇을 변경했나?git blame $file7. 아이디별 커밋 구분git show $id8. 특정 아이디가 만든 특정 파일git show $id:$file9. 모든 로컬 브랜치들git branch
* Concepts(개념)
* Revert(되돌리기)1. Return to the last committed stategit reset --hard ! you cannot undo a hard reset2. Revert the last commitgit revert HEAD Creates a new commit3. Revert specific commitgit revert $id4. Fix the last commitgit commit -a --amend (after editing the broken files)5. Checkout the $id version of a filegit checkout $id $file
* Branch(가지)1. Switch to the $id branchgit checkout $id2. Merge branch1 into branch2git checkout $branch2git merge branch13. Create branch named $branch based on the HEADgit branch $branch4. Create branch $new_branch based on branch $other and switch to itgit checkout -b $new_branch $other5. Delete branch $branchgit branch -d $branch
* Update(업데이트)1. Fetch latest changes form origingit fetch (but this does not merge them)2. Pull latest changes from origingit pull (does a fetch followed by a merge)3. Apply a patch that some sent yougit am -3 patch.mbox (in case of a conflict, resolve and use git am --resolved)
* Publish(발행하기)
* 유용한 명령들1. Finding regressionsgit bisect start (to start)git bisect good $id ($id is the last working version)git bisect bad $id ($id is a broken version)
git bisect bad/good (to mark it as bad or good)git bisect visualize (to launch gitk and mark it)git bicsect reset (once you're done)
2. Chect or errors and cleanup repositorygit fsckgit gc --prune
3. Search working directory fo foo()git grep "foo()"
* Merge Conflicts(충돌) 해결1. To view the merge conclictsgit diff (completd conflict diff)git diff --base $file (against base file)git diff --theirs $file (against otehr changes)2. To discard conflicting patchgit reset -hardgit rebase --skip3. After resolving conflicts, merge withgit add $conflicting_file (do for all resolved files)git rebase --continue
버전관리 많이 발전했군요. 10여년 전에 CVS 잠깐 써 본 게 단데... 그 땐 TortoiseCVS 가 있었죠. ^^ MS Office 에 저런 비교 기능이 있는 것도, 그 기능을 git 가 지원한다는 것도 새로 알게 되었네요. (이 경우는 tortoiseGit 가 지원하는 거겠죠?) 언제나처럼 좋은 강의 고맙습니다!