본문 바로가기

SCM

(41)
17. Git 브랜치 태깅하기 - git tag 사람들은 보통 릴리즈할 때 Tag 를 사용한다. Tag 조회하기 $ git tag v0.1 v1.3 검색 패턴을 사용하여 태그를 검색할 수 있다. $ git tag -l 'v1.8.5*' v1.8.5 v1.8.5-rc0 v1.8.5-rc1 v1.8.5-rc2 v1.8.5-rc3 v1.8.5.1 v1.8.5.2 v1.8.5.3 v1.8.5.4 v1.8.5.5 Tag 종류 Git 의 태그는 Lightweight 태그와 Annotated 태그로 두 종류가 있다. Lightweight 태그는 브랜치와 비슷한데 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지 않는다. 단순히 특정 커밋에 대한 포인터일 뿐이다. Annotated 태그의 경우는 작성자/이메일/태그 날짜/태그 메시지도 저장한다. Lightweigh..
16. Git 브랜치 합치기 - git rebase Rebase 아래와 같이 Branch 가 두 가지로 뻗어 나간 경우 아래와 같이 rebase 한다. $ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it...Applying: added staged command 이 명령은 두 브랜치가 나뉘기 전인 공통 커밋으로 이동하고 나서 그 커밋부터 지금 Checkout 한 브랜치가 가리키는 Commit 까지 diff 를 차례로 만들어서 어딘가에 임시로 저장해 놓는다. 그리고 rebase 대상이 되는 branch 에 이를 차례로 적용하고 이렇게 합쳐진 위치로 현재 branch 를 가리키게 한다. 그리고 나서 master branch 를 Fa..
15. Git 브랜치 합치기 - git merge 브랜치를 여러개 만들었을 때 다른 두 개의 소스를 병합해야 하는 경우가 생긴다. 이때 사용하는 명령이 git merge 이다. git merge 아래 명령은 master 브랜치에 develop 에 있는 소스를 병합한다. $ git checkout master $ git merge develop 병합은 아래와 같은 상황이 있을 수 있다. Fast forward Merge 현재 작업하는 프로젝트의 상태가 아래와 같을때 아래 명령중 하나로 브랜치를 하나 만들고 HEAD 포인터의 위치를 옮겨보자. $ git branch iss53 $ git checkout iss53 $ git checkout -b iss53 여차 저차 해서 아래와 같은 상황이 되었을 때 (현재 브랜치인 Master 가 가리키는 C2 가 Mer..
14. Git 브랜치 만들고 이동하기 - git branch, git checkout Git 에서 사용하는 브랜치는 Repository 내부의 디렉토리 정도로 이해해도 된다. 필요에 따라 디렉토리를 나누고 특정 파일을 각각의 디렉토리에 저장하며 필요에 따라 각 디렉토리의 싱크를 맞추는 작업이 필요하다. 이를 위해 Git 에서는 브랜치를 다루는 git branch 명령을 제공한다. git branch 브랜치를 생성, 수정, 삭제하는 기본적인 명령은 아래와 같다. $ git branch [브랜치명] // 브랜치 생성 $ git branch -d [브랜치명] // 브랜치 삭제 $ git branch -m [기존 브랜치명] [바뀔 브랜치명] // 브랜치 이름 변경 조건으로 Commit 된게 하나도 없다면 브랜치는 생성할 수 없다. 왜냐하면 master 라는 브랜치는 포인터라서 먼가 가리키는게 필..
13. Git 완료된 커밋과 비교 - git diff 다른 커밋과 현재 Working 디렉토리를 비교하는 명령은 git diff 를 사용한다. git diff $ git diff // 현재 브랜치의 마지막 커밋과 차이점 비교 $ git diff [Commit ID] // 특정 커밋과 차이점 비교 $ git diff [Commit ID] -- [파일 경로] // 특정 커밋과 특정 파일의 차이점 비교
12. Git 완료한 커밋을 되돌리기 - git reset 완료한 커밋을 되돌리기 완료한 커밋을 수정해야 할 때는 --amend 옵션을 사용한다. $ git commit --amend 예를 들어 어떤 파일을 깜박한 경우에는 아래와 같이 사용하면 된다. $ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend 이렇게 명령을 치면 config 에 등록한 editor 가 열리는데 이때 커멘트를 수정하면 된다. 결과적으로 해당 커밋에 수정한 내용이 추가되게 되면 커맨트가 새롭게 변경된다. 파일 상태를 Stage 에서 Unstage 로 변경하기 따로 따로 커밋을 해야 하는데 실수로 모두 Staging Area 에 올린 경우 ( git add * 따위로 ) 몇몇 파일을 Unstage 로 변..
11. Git 커밋 이력조회 - git log 저장소에 있는 Commit 이력을 조회할 경우 git log 명령을 사용한다. git log 대표적으로 간단히 사용하는 형식은 아래와 같다. $ git log // 커밋 이력 상세 조회. 가장 최근의 커밋이 먼저 나오고 스페이스 바를 누르면 변경 이력이 하나씩 보여진다. $ git log --oneline // 커밋 이력 중 커밋 ID 와 타이틀 메시지만 조회 $ git log --oneline --decorate --graph --all// 모든 브랜치 커밋 이력 조회 $ git log --index.html // 특정 파일의 변경 커밋 조회 $ git log -p // diff 를 보여준다. $ git log -p -2 // 최근 두 개의 결과만 diff 를 보여준다. --stat 옵션으로 각 커밋의..
10. Git 레포지토리에 커밋하기 - git commit Git 은 파일을 레포지토리에서 파일을 레포지토리에 저장하는 명령인 git commit 가 있다. 이 명령을 수행할 수 있는 파일은 Staged 영역에 올라온 파일만 가능하다. 앞서 살펴본 Git 레포지토리에서 파일의 라이프 사이클에서 Staged => Unmodified 에 해당한다. git commit git commit 명령은 아래와 같은 형식으로 할 수 있다. git commit 명령을 실행할 때 -a 옵션을 추가하면 modified 상태의 파일을 자동으로 Staging Area 에 넣고 git commit 해준다. 그래서 git add 명령을 실행하는 수고를 덜 수 있다. 단 Untracked 된 파일의 경우는 -a 옵션을 줘도 아무 의미가 없다. $ git commit // git commit..