git-basic-commands

37
Git Basic Commands #Getting started with git insanehong@KGUG

Upload: insanehong-kim

Post on 27-Jun-2015

707 views

Category:

Technology


2 download

DESCRIPTION

KGUG(Korea Git User Group) 주최 대학생 대상 Git 교육 “Getting Started with git” 에서 발표된 “Git Basic Commands” 의 발표 자료

TRANSCRIPT

Page 1: git-basic-commands

Git Basic Commands

#Getting started with git

insanehong@KGUG

Page 2: git-basic-commands

insanehong.talk.start(“Hi! Bro!”)

NAVER / NAVER Labs

웹 개발자 / KGUG 운영진

Twitter: @insanehong

Email : [email protected]

Page 3: git-basic-commands

Command Line Interface 로 교육을 하는 이유

Page 4: git-basic-commands

Command Line Interface 와 친해지면

Page 5: git-basic-commands

기초적인 내용이니 포기하지 마시고 잘 따라와 주세요

Page 6: git-basic-commands

git config

$> git config —-global user.name “insanehong”

$> git config —-global user.email “[email protected]

$> /etc/gitconfig

$> ~/.gitconfig

$> .git/config

$HOME/.gitconfig

C:\Documents and Settings\$USER/ C:\Users\$USER

• 윈도우

• 유닉스 계열

Page 7: git-basic-commands

git config

$> git config —-global user.name “insanehong”

$> git config —-global user.email “[email protected]

$> git config —-system (/etc/gitconfig)

$> git config —-global (~/.gitconfig)

$> git config —-local (.git/config)

• 원하는 방법을 선택하여 설정

Page 8: git-basic-commands

git config

//commit author 정보로 사용될 author name $> git config —-global user.name “your name”

//commit author 정보로 사용될 author email $> git config —-global user.email “your email”

//git 이 사용할 기본 text editor 설정 $> git config --global core.editor emacs

//git이 사용할 기본 diff tool 설정 $> git config --global diff.tool vimdiff //diff tool

• 자주 사용하게될 설정은 global 로 설정

Page 9: git-basic-commands

git config

$> git config —-list //모든 설정값

$> git config user.name //지정한 설정값

• config 정보 확인

Page 10: git-basic-commands

git management step

• Working Directory : 작업공간

• Staging Area

- 커밋 가능한 파일들의 정보를 저장 - .git/index

• Object Database : Commit Object 저장소

- Commit Object 저장소 - .git/objects

Page 11: git-basic-commands

git management step

Page 12: git-basic-commands

git init

$> git init //Working Directory 를 갖는 새로운 저장소를 추가

$> git init —bare //Working Directory 가 없는 저장소

$> git clone <repo_url>//remote 저장소에서 받아오는 경우

• local 에서 git 저장소를 만드는 2가지 방법

Page 13: git-basic-commands

git status

$> git status //git init 직후 실행해보면

On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)

• working directory 의 파일의 상태 조회

Page 14: git-basic-commands

git은 status

$> git init —-bare

• Untracked : git이 관리하고 있지 않음

• Tracked : git이 관리중

• Unmodified : 마지막 commit 후 수정되 않음

• modified : 마지막 commit 이후 수정됨

• Staged : 수정내용을 commit 할 수 있음

Page 15: git-basic-commands

git은 status

$> git init —-bare

Page 16: git-basic-commands

git status

$> echo hello world >> README.md //hello world 라는 내용을 가진 README.md 파일 생성

$> git status

On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed)

README.md

nothing added to commit but untracked files present (use "git add" to track)

• 새로운 파일을 만들어서 다시 확인

Page 17: git-basic-commands

git add

$> git add README.md

$> git status

On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage)

new file: README.md

• Untracked file 을 Staged 로 만들기

Page 18: git-basic-commands

git commit

//여러줄의 메세지를 작성할때 $> git commit

//한줄정도의 간단한 메세지를 작성할때 $> git commit -m “add new file: README.md”

[master (root-commit) 9de70a9] add new file: README.md 1 file changed, 1 insertion(+) create mode 100644 README.md

• Staged 파일을 Tracked/Unmodified 파일로 만들기

Page 19: git-basic-commands

git log

// commit 이력 조회 $> git log

// 이쁘게 꾸밀수 있음. alias 로 등록된 log format $> git log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit

• commit 이력 조회

Page 20: git-basic-commands

git log

// commit 이력 조회 $> git log

// 이쁘게 꾸밀수 있음. alias 로 등록된 log format $> git log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit

• commit 이력 조회

Page 21: git-basic-commands

git show

• commit 의 상세 정보확인

// 일반적으로 별도의 타겟을 정하지 않으면 HEAD가 가리키는 commit $> git show

// 특정 commit의 상세 정보 조회 $> git show <commit>

// 특정 branch 가 가리키는 commit의 상세 정보 조회 $> git show <branch_name>

// HEAD 를 기준을 상위 여러개의 commit 상세정보 조회 $> git show HEAD~{number>

Page 22: git-basic-commands

git push

• 원격 저장소로 코드 보내기

$> git push <remote_name> <current_branch_name>

// remote 를 origin 으로 등록했을 경우 // branch 를 변경한적 없다면 master 가 default $> git push origin master

Page 23: git-basic-commands

git clone

• 원격 저장소 코드 받아오기

$> git clone <path>

// local 에 있는 —-bare 저장소도 가능 $> git clone ./local-remote.git/

Page 24: git-basic-commands

알아두면 유용한 Git Tip

Page 25: git-basic-commands

git tracked 상태 파일 관리 tip

$> git rm <file_name> //파일삭제

$> git mv <origin_file> <target> //파일 이름 변경 혹은 이동

• 파일의 변경정보를 add 없이도 staged 상태로 변경

Page 26: git-basic-commands

git working directory 관리 tip

$> git add . //변경 된 파일 모두 staged 상태로 추가

$> git add -u //변경된것과 삭제된 파일만 staged 상태로 추가

$> git add -p //hunk 단위로 관리가능

• staged 상태 관리

Page 27: git-basic-commands

git working directory 관리 tip

$> git checkout <file_name> //변경중이던 파일 Unmodified 상태로 되돌리기

$> git rm --cached <file_name> //Untracked 상태로 변경

//Staged 상태의 파일을 Modified 상태로 변경 $> git reset <file_name>

• 작업 파일 관리

Page 28: git-basic-commands

git HEAD/branch 관리 tip

//HEAD 와 branch 가 특정 커밋을 바라보도록 수정 $> git reset —-hard <commit>|<branch_name>

//HEAD 와 branch 를 현재 커밋 시점으로 이전 커밋을 바라보도록 수정 $> git reset —-hard HEAD^

//HEAD 와 branch 를 현재 커밋 시점으로 특정 시점의 커밋을 바라보도록 수정 $> git reset —-hard HEAD~{number}

—-hard 옵션을 사용하지 않으면 변경내역이 있는 파일들은working directory에 modified 상태로 유지

Page 29: git-basic-commands

git commit 관리 tip

//새로운 파일을 추가하거나 Tracked 파일을 수정하지 않고 메세지만 변경하고 싶은 경우에는 도 git commit —-amend 를 바로 사용가능 $> git commit —-amend

$> git commit -a //staged 상태 건너뛰고 바로 commit

$> git commit -v //commit editor 에 diff 정보를 추가

Page 30: git-basic-commands

git diff 확인

$ git diff //Unstaged 상태의 diff 확인

$> git diff —-cached //Staged 상태의 diff 확인

Page 31: git-basic-commands

git commit 관리 tip

root commit은 —-amend 옵션을 제외하고 이후 변경불가

.gitignore 파일을 추가후 initialize commit 추천

주의!!!

Page 32: git-basic-commands

git push tip

//현재 branch 변경이력을 remote에 존재하는 다른이름의 branch에 반영시키거나 새로운 branch 를 만들면서 변경이력을 올리는 방법 $> git push <remote> <target_branch>:<current_branch>

//현재 branch 의 변경이력을 remote 의 branch에 강제로 적용시키기 $> git push —-force|-f <remote_name> <branch_name>

Page 33: git-basic-commands

push —-force 를 해버린 경우

다른 팀원들이 고통의 나날을 보낼수 있습니다.

강제 push 전에는 팀원들과 미리 협의하길 추천.

주의!!!

git commit

Page 34: git-basic-commands

git clone tip

// clone 받을 directory 명을 지정 $> git clone <repo_path> <directory_name>

// remote 에서 특정 branch 를 지정해서 clone 받고 싶은 경우 $> git clone <repo_path> -b <branch_name>

Page 35: git-basic-commands

언젠가는 꼭 써보게 되거나 찾게 될 command 들

$> git reflog //gc 가 일어나기 전까지 과거 이력 조회

$> git cherry-pick <commit> //커밋 가져오기

$> git stash //modified 파일들의 변경내역을 임시로 저장

$> git tag //version 관리 v0.0.1

• 지금은 이런게 있다는것만 알아도

Page 36: git-basic-commands

insanehong.talk.end(“Thanks. Bye!!”)

http://www.flickr.com/photos/adulau/8442476626/

Page 37: git-basic-commands

본 자료는 14.11.1 KGUG(Korea Git User Group) 주최 대학생 대상 Git 교육인

“Getting Started with git” 에서 발표된 “Git Basic Commands” 의 발표내용을 담고 있습니다.

본 자료에 사용 된 이미지들은 Creative Common License 를 따르고 있습니다.

사용된 이미지의 출처는 해당 이미지 하단에 기제 되어 있습니다.

본 자료에 대한 수정 배포는 허가 하지 않습니다.

본자료를 공유하실 경우 원본에 대한 임의 수정을 금하며 저작자를 반드시 명시해 주시기 바랍니다.

twitter : @insanehongemail : [email protected]