Git and github

참고 사이트

http://gitref.org/

올ㅋ 비쥬얼하게 git branching을 배울 수 있는 곳

http://pcottle.github.com/learnGitBranching/?utm_source=twitterfeed&utm_medium=twitter

Git을 이해하는데 어려움을 겪는 이유가 subversion과 같은 기존 SCM과 같은 식으로 이해하려 하기 때문이다. 나도 그렇게 이해하려다가 아직까지도 어려움을 겪고 있으니까…

기존에 가진 소스관리방식을 잊고 gitref.org에 나온 내용으로 이해하자.

 

If you think about Git as a tool for storing and comparing and merging snapshots of your project, it may be easier to understand what is going on and how to do things properly.

소스의 스냅샷(commit)을 찍고 이 스냅샷끼리 비교(diff or compare)하여 통합(merge)하면서 저장하는 툴이다. 정도 될까?

 

 

git init : git 생성. .git의 히든 디렉토리가 생성된다.

git clone url [localname] : url로부터 git을 복제해옴.

git add [files] : 트랙킹을 시작할 파일들을 추가.

git status : staging area 에서의 소스코드 변경사항을 확인할 때 사용

git commit : stage -> snapshot

git은 사용자 이름과 이메일을 기록. 환경변수로 이 두개를 먼저 셋팅해줘야함.

git commit -m ‘commit message’ : commit시 기록할 메세지를 한큐에 보낸다.

git commit -a : 자동으로 tracked, modified files를 stage에 올려줌.

 

git diff : staging file과 working dir. 파일을 비교해줌. 실제로는 diff 커맨드를 사용하는 것.

git diff –cached : staging area에 있는 파일과 repo. 에있는 최근 commit을 비교

git diff HEAD : staged files 와 unstaged files(working dir. files)를 repo.와 비교해줌.

git diff -stat : diff 정보를 요약해서 보여줌.

git rm file : git에서 해당 파일을 삭제

git mv : git rm –cached와 동일하며 잉여 커맨드라고 함. git은 다른놈과 다르게, 파일이름 변경을 트랙킹하지 않음. 혼란스럽겠네…

 

git reset HEAD : undo last commit

–  git reset –soft HEAD : undo commit only. stage state는 유지

– git reset –hard HEAD : undo commit 후에 stage 상태도 undo. 조심해서 써라.

 

git stash

 

git branch

git checkout

git merge

git log

git tag

 

git은 다른 것들과 다르게 중앙 집중식 소스관리가 아니다. 마치 네트웍처럼 각 레포지토리가 다 독립적으로 동작한다. 다만, 공동 작업을 위해서 같이 접근 가능한 레포지토리가 필요하며, 이 원격 레포지토리와 내가 작업하는 로컬 레포지토리사이에 싱크를 하기위한 커맨드가 git remote이다. git clone을 해서 로컬 레포지토리를 생성했다면, 자동으로 url정보를 이용하여 연결되게 된다.

원격 레포지토리에서 변경 소스를  로컬 레포지토리로 가져오는 커맨드가 git fetch(or pull)이며, 로컬 레포지토리 소스를 원격에 반영하기 위한 것이 git push이다.

 

git remote

git push

git pull

git fetch

댓글 남기기