[Git]Git 명령어에 대해서 알아보자
🦥 Git Command
다음은 콘솔에서 git 명령을 사용하는 방법이다.
git config
- git의 사용 환경을 설정한다.
- /etc/gitconfig 설정 파일
- 시스템의 모든 사용자와 모든 저장소에 적용되는 설정.
git config --system
옵션으로 이 파일을 읽고 쓴다.- Windows OS의 경로 - C:/ProgramData/Git/config
- ~/.gitconfig, ~/.config/git/config 설정 파일
- 특정 사용자만 적용되는 설정.
git config --global
옵션으로 이 파일을 읽고 쓴다.- Windows OS의 경로 - C:/Users/사용자홈/.gitconfig
- .git/config
- 특정 저장소에만 적용되는 설정.
git config
옵션을 지정하지 않으면 이 파일을 읽고 쓸 수 있다.
예1) 사용자 이름 설정하기
$ git config --global user.name "kyunghan1"
$ git config --global user.email "han156456@naver.com"
예2) 기본 텍스트 편집기 설정하기
$ git config --global core.editor emacs
예3) 설정 확인하기
$ git config -l
$ git config --list
예4) 특정 값 확인하기
$ git config user.name
git help [명령], git [명령] –help
- 명령어에 대한 도움말을 볼 수 있다.
예1) config 명령에 대한 도움말 보기
$ git help config
$ git config --help
git init
- 존재하는 폴더를 깃 저장소로 만든다.
- .git 폴더를 생성한다.
- 깃 저장소 관련 파일을 두는 폴더이다.
예) ~/git/myProject 폴더를 깃 저장소로 설정하기
~/git/myProject$ git init
.gitignore
- Git으로 관리하지 않을 파일을 지정한다.
- 예를 들면 로그 파일(.log)이나 빌드 도구가 자동으로 생성한 파일 또는 디렉토리 등.
- 패턴을 사용하여 Git이 무시할 파일을 지정한다.
- 빈 줄이나
#
으로 시작하는 줄은 주석으로 간주한다. - 표준 Glob 패턴을 사용한다.
/
로 시작하면 하위 디렉토리에 적용되지 않는다.- 디렉토리는 끝에
/
을 붙인다. !
로 시작하는 파일은 무시하지 않는다.
- 빈 줄이나
예1) 주석을 표시하는 방법
#이것은 주석입니다. 또는 빈 줄.
예2) bin/ 디렉토리를 통째로 무시하기
bin/
예3) 현재 디렉토리의 *.log 파일만 무시하기.
- src/*.log처럼 기타 하위 디렉토리에 있는 *.log 파일은 포함하기
/*.log
예4) src/*.class 파일은 무시하고,
- src/main/*.class 파일은 포함하기
src/*.class
예5) src 디렉토리 및 그 하위 디렉토리에 있는 *.class 파일 무시하기
src/**/*.class
예6) 현재 디렉토리 및 그 하위 디렉토리에 있는 모든 *.log 파일 무시하기
*.log
예7) 확장자가 '.o' 또는 '.a'인 파일 무시하기
*.[oa]
- 위의 방식 대신에 아래처럼 낱개를 일일이 지정해도 된다.
*.o
*.a
예8) *~
파일명이 ~로 끝나는 파일
예9) *.log 파일 중에서 cotext.log 파일은 무시하지 않고 포함하기
- 문법) !(무시하지말아야할파일)
- 예) !context.log
git clone [url] [폴더]
- url로 지정한 서버의 저장소를 로컬로 복제한다.
- 폴더 이름을 지정하지 않으면 저장소 이름으로 폴더를 만들어 복제한다.
- 폴더 이름을 지정하면 그 이름으로 폴더를 만들어 복제한다.
예1) github.com의 저장소를 로컬에 복제하기
$ git clone https://github.com/kyunghan1/kyunghan1.github.io
예2) github.com의 저장소를 myProject라는 이름으로 폴더를 만들어 로컬에 복제하기
$ git clone https://github.com/kyunghan1/kyunghan1.github.io myProject
git add [파일]
- 작업 디렉토리에 새로 추가한 파일인 경우 Staging Area에 새로 추가된 파일임을 기록한다.
- 변경한 파일인 경우 Staging Area에 변경된 파일임을 기록한다.
- 이렇게 Stating Area에 기록된 파일은 한 스냅샷으로 묶이며 커밋할 때 이 스냅샷의 파일들이 저장소에 보관된다.
- Staging Area에 기록된 파일은 Staged 상태가 된다.
예1) 현재 폴더 및 하위 폴더에서 확장자가 c인 파일을 Staging Area에 기록하기
$ git add *.c
예2) 현재 폴더 및 하위 폴더에서 LICENSE 이름을 가진 파일을 Staging Area에 기록하기
$ git add LICENSE
예3) 현재 폴더나 하위 폴더의 파일 중에 변경되거나 추가된 파일을 Staging Area에 기록하기
$ git add .
git commit -m “이번 스냅샷을 저장하는 이유”
- Staging Area에 기록된 파일들(스냅샷)을 로컬 저장소에 보관한다.
- 파일을 새로 추가하거나 변경하였다면 반드시
git add
를 실행하여 Staging Area에 기록해야 한다. - 기록되어 있지 않은 파일이나 변경 사항은 저장소에 보관되지 않는다.
- 커밋 할 때 마다 스냅샷에 대해 새 체크섬(checksum) 값이 부여되고 이 값이 스냅샷을 구분하는 식별자로 사용된다.
예1) Staging Area에 있는 파일을 저장소에 보관하기
$ git commit -m '첫 번째 버전'
예2) git add + git commit = git commit -a -m '설명'
저장소에 넣기 전에 매번 Staging Area에 기록하는 것은 매우 귀찮은 일이다.
이를 한 번에 할 수 있다.
단 Tracked 파일(Staging Area에 있거나 저장소에 있는 파일)만 대상으로 한다.
새로 추가한 파일 중에 아직 staged 상태가 아닌 파일은 제외한다.
$ git commit -a -m '바로 저장소로 보관하기'
git status
- 작업 파일의 상태를 조회한다.
예1) 현재 작업 디렉토리의 파일 상태 보기
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: src/main/webapp/test02.html
modified: src/main/webapp/test03.html
new file: src/main/webapp/test05.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: src/main/webapp/index.html
modified: src/main/webapp/test01.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/main/webapp/test05.html
예2) 현재 작업 디렉토리의 파일 상태를 짤막하게 보기
$ git status --short
M src/main/webapp/test01.html
M src/main/webapp/test02.html
MM src/main/webapp/test03.html
?? src/main/webapp/test04.html
A src/main/webapp/test05.html
AM src/main/webapp/test06.html
[출력 결과 보는 법]
- [Staged 상태][Unstaged 상태] [파일 경로]
_M src/main/webapp/index.html
- 작업 디렉토리에 있는 파일을 변경한 경우.
M_ src/main/webapp/test01.html
- 작업 디렉토리에 있는 파일을 변경한 후, ‘git add’ 명령으로 Stated 상태로 만든 경우.
MM src/main/webapp/test02.html
- Staged 상태의 파일을 다시 변경한 경우.
?? src/main/webapp/test03.html
- 작업 디렉토리에 새로 파일을 추가한 경우.
A_ src/main/webapp/test04.html
- 새로 추가한 파일을 ‘git add’ 명령으로 Stating Area에 등록한 경우.
AM src/main/webapp/test05.html
- 새로 추가한 파일을 Staged 상태로 만든 후, 다시 변경한 경우.
git diff [옵션]
- 파일의 변경 내용을 비교한다.
예1) 작업 디렉토리에서 변경한 파일과 Staging Area에 등록된 파일과 비교하여
변경 전/후를 출력하기
$ git diff
diff --git a/src/main/webapp/test01.html b/src/main/webapp/test01.html
index 80ba906..3322e11 100644
--- a/src/main/webapp/test01.html
+++ b/src/main/webapp/test01.html
@@ -8,6 +8,6 @@
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
</head>
<body>
-<h1>Hello!</h1>
+<h1>Hello!x</h1>
</body>
-</html>
\ No newline at end of file
+</html>
diff --git a/src/main/webapp/test03.html b/src/main/webapp/test03.html
index 37f2fb7..57c25bf 100644
...
예2) 특정 파일에 대해 변경 전/후를 비교하기
$ git diff src/main/webapp/test01.html
...
예3) Staging Area에 있는 파일과 저장소에 있는 파일을 비교하기
이 경우 새로 추가한 파일도 보여준다.
--staged 와 --cached 는 같은 옵션이다.
$ git diff --staged 또는 git diff --cached
diff --git a/src/main/webapp/test02.html b/src/main/webapp/test02.html
index 53e43f2..2f411f8 100644
...
diff --git a/src/main/webapp/test03.html b/src/main/webapp/test03.html
index 53e43f2..2f411f8 100644
...
diff --git a/src/main/webapp/test05.html b/src/main/webapp/test05.html
new file mode 100644 <=== 새 파일이 Staging Area에 있는 경우에 이 문구가 붙는다.
index 0000000..3081b8d
...
diff --git a/src/main/webapp/test06.html b/src/main/webapp/test06.html
new file mode 100644 <=== 새 파일이 Staging Area에 있는 경우에 이 문구가 붙는다.
index 0000000..3081b8d
...
git checkout [파일]
- 작업 디렉토리의 파일을 변경한 후 변경 전으로 되돌릴 때 사용한다.
- Staging Area에 등록된 것이 없다면, 최종 커밋한 버전으로 되돌린다.
- Staging Area에 등록된 것이 있다면, 현재 Staging Area에 기록된 버전으로 되돌린다.
git add
를 수행한 적이 없다면 Staging Area에는 마지막으로 커밋한 파일을 가리킨다. 따라서 마지막으로 커밋된 파일로 되돌릴 것이다.
예) src/main/webapp/index.html 파일을 편집 전으로 되돌리기
$ git checkout src/main/webapp/index.html
git rm [파일]
- Staging Area의 기록에서 지정된 파일을 뺀다.
- 작업 디렉토리에 해당 파일이 있다면 그 파일도 자동 삭제된다.
- 이전 스냅샷에는 해당 파일이 계속 남아 있다.
- 파일 삭제 + git add = git rm
예1) 작업 디렉토리에 있는 파일을 삭제한 후 Git에서도 제거하기
$ rm test01.html <=== 작업 디렉토리에서 파일을 삭제한다.
$ git rm test01.html <=== Staging Area에 삭제 파일 정보를 등록한다.
'rm' 대신 'add'를 사용하여 삭제된 파일을 표시해도 된다.
예) git add test01.html
$ git commit <=== 저장소에서 Staging Area의 정보에 따라
예2) 변경한 파일이나 Staging Area에 이미 기록된 파일을 강제로 제거하기
$ git rm -f test01.html <=== 변경된 내용을 버리고 현재 스냅샷에서 빼버린다.
<=== 변경한 파일이 Staging Area에 기록되었더라도
변경된 내용을 버리고 스냅샷에서 빼버린다.
git mv [기존파일명] [새파일명]
- 파일 이름을 변경한다.
예1) test01.html 파일의 이름을 test02.html로 변경하기
$ mv test01.html test02.html
$ git rm test01.html
$ git add test02.html
예2) test01.html 파일의 이름을 test02.html로 변경하기 II
위 작업을 좀 더 쉽게 다음과 같이 단축으로 처리할 수 있다.
$ git mv test01.html test02.html
git log
- Git 저장소의 변경 내력을 조회한다.
예1) 저장소의 변경 내력을 최신 커밋 순으로 출력하기
$ git log
...
commit 80e779cf97f2b8857b1fd4e3796a612470255852 <=== 커밋 체크섬
Author: kyunghan1 <han156456@naver.com> <=== 커밋한 사람의 이름과 이메일
Date: Tue Aug 21 10:04:49 2018 +0900 <=== 커밋한 날짜
ok <=== 커밋할 때 입력한 내용
commit d89524011f2c873fedca8643fa2cb95e02cb6656
Author: kyunghan1 <han156456@naver.com>
Date: Tue Aug 21 09:35:48 2018 +0900
Initial commit
예2) 저장소의 변경 내력을 최신 커밋 순서로 출력하는데 최근 두 개의 결과만 출력하기(-2 옵션)
각 커밋의 변경 내용을 보여주기(-p 옵션)
$ git log -p -2
commit cc898de0b9ea138f554aeb59910b348cb34850f4 (HEAD -> master)
Author: kyunghan1 <han156456@naver.com>
Date: Sun Aug 26 19:55:21 2018 +0900
p 태그 추가
diff --git a/src/main/webapp/ex03.html b/src/main/webapp/ex03.html
index 0afb588..c0e04ec 100644
--- a/src/main/webapp/ex03.html
+++ b/src/main/webapp/ex03.html
@@ -5,5 +5,6 @@
</head>
<body>
<h1>테스트</h1>
+<p>내용 추가</p>
</body>
</html>
...
예3) 저장소에 대한 각 커밋의 통계 정보를 조회한다.
$ git log --stat
...
commit c555b1b128453d18ac2a5d3493b79021dce3f470
Author: kyunghan1 <han156456@naver.com>
Date: Sun Aug 26 19:54:50 2018 +0900
HTML 내용 변경
src/main/webapp/ex03.html | 6 ++++-- <=== 어떤 파일의 추가되거나 삭제된 줄 수
1 file changed, 4 insertions(+), 2 deletions(-) <=== 요약 정보
...
예4) 추가되거나 삭제된 내용 중에 '<p>' 문구를 포함한 정보 조회
$ git log -p -S '<p>'
commit cc898de0b9ea138f554aeb59910b348cb34850f4 (HEAD -> master)
Author: kyunghan1 <han156456@naver.com>
Date: Sun Aug 26 19:55:21 2018 +0900
p 태그 추가
diff --git a/src/main/webapp/ex03.html b/src/main/webapp/ex03.html
index 0afb588..c0e04ec 100644
--- a/src/main/webapp/ex03.html
+++ b/src/main/webapp/ex03.html
@@ -5,5 +5,6 @@
</head>
<body>
<h1>테스트</h1>
+<p>내용 추가</p>
</body>
</html>
예5) 커밋 정보를 한 줄로 출력해서 보기
$ git log --oneline
f559e21 (HEAD -> master, b1) v0.3
5896279 v0.2
8dd76bf v0.1
5d8d97b (origin/master, origin/HEAD) Initial commit
예6) 커밋 정보와 브랜치 정보를 함께 보기
$ git log --oneline --graph --all
* 6f4725e (HEAD -> master) v0.6
| * 34fda9c (b1) v0.5
| * 9cf510e v0.4
|/
* f559e21 v0.3
* 5896279 v0.2
* 8dd76bf v0.1
* 5d8d97b (origin/master, origin/HEAD) Initial commit
git commit –amend
- 마지막 커밋을 다시 현재의 Staging Area의 내용으로 덮어쓴다.
- 그래서 커밋 완료 후 빠뜨린 파일이 있거나 제거하지 못한 파일이 있을 경우 사용한다.
- 마지막 커밋 후에 변경 사항이 없다면 단지 커밋 메시지만 변경한다.
- 이전 커밋을 덮어쓰는 것이지만 커밋의 체크섬은 새로 발급된다.
예1) ex03.html을 변경한 후 커밋한다. 그 후에 다시 ex04.html을 변경한 후 이전 커밋과 합친다.
$ git add ex03.html
$ git commit -m 'ex03 변경'
$ git add ex04.html
$ git commit --amend -m 'ex03 및 ex04 변경'
git reset HEAD [파일]
git add
를 실행하면 Staging Area에 해당 파일이 기록되어 커밋할 스냅샷으로 묶인다.- 스냅샷으로 묶인 파일들은 커밋할 때 저장소에 그 변경 내용이 보관된다.
- Staging Area의 현재 스냅샷에서 빼고 싶은 파일이 있다면 이 명령을 사용한다.
- 이 명령을 수행하면 변경된 상태이지만 아직 Staging Area의 현재 스냅샷에 포함되지 않은 파일이 된다.
예1)
'ex03.html'과 'ex04.html' 파일을 변경한 후 Staging Area에 넣기
$ git add ex03.html ex04.html
Staging Area에 넣은 두 개 파일 중에서 ex03.html은 제외하기
$ git reset HEAD ex03.html
git remote
- 로컬 저장소에 연결된 원격 저장소를 확인하거나 추가한다.
git clone [url]
으로 원격 저장소를 복제하면 원격 저장소가 origin 이라는 이름으로 자동 등록된다.
예1) 원격 저장소의 이름을 알아내기
$ git remote
origin
예2) 원격 저장소의 이름 뿐만아니라 URL도 알아내기
$ git remote -v
origin https://github.com/kyunghan1/kyunghan1.github.io.git (fetch)
origin https://github.com/kyunghan1/kyunghan1.github.io.git (push)
예3) 원격 저장소 추가하기
$ git remote add [단축이름] [URL]
$ git remote add cs https://github.com/kyung/test.git
origin https://github.com/kyunghan1/kyunghan1.github.io.git (fetch)
origin https://github.com/kyunghan1/kyunghan1.github.io.git (push)
cs https://github.com/kyung/test.git (fetch)
cs https://github.com/kyung/test.git (push)
예4) 원격 저장소의 정보를 조회하기
$ git remote show [원격 저장소 이름]
$ git remote show origin
* remote origin
Fetch URL: https://github.com/kyunghan1/kyunghan1.github.io.git
Push URL: https://github.com/kyunghan1/kyunghan1.github.io.git
HEAD branch: master
Remote branch: <=== 로컬 저장소와 연결된 원격 저장소의 브랜치
master tracked
Local branch configured for 'git pull': <=== git pull 했을 때 merge 할
master merges with remote master 원격 저장소의 브랜치와 로컬 저장소의 브랜치
Local ref configured for 'git push': <=== git push 했을 때 push 할
master pushes to master (up to date) 로컬 저장소의 브랜치와 원격 저장소의 브랜치
예5) 원격 저장소의 단축 이름을 변경하기
$ git remote rename [현재 단축이름] [새 단축이름]
$ git remote rename cs kyung
$ git remote
origin
eomcs
예6) 원격 저장소를 삭제하기
- 원격 저장소의 서버 정보가 변경되었을 때
- 별도의 복제가 필요하지 않을 때
- 기여자가 활동하지 않을 때
$ git remote rm [원격 저장소의 단축이름]
$ git remote rm kyung
$ git remote
origin
git fetch [원격저장소이름]
- 로컬에는 없고 원격 저장소에만 있는 데이터를 모두 가져온다.
- 단 가져온 데이터를 로컬 파일에 자동으로 합치지는(merge) 않는다.
- 개발자가 직접 merge 해야 한다.
예1) 원격 저장소에 마지막으로 push 한 다음에 변경된 모든 것을 가져오기
$ git fetch origin
git pull
git pull
=git fetch origin
+ Merge- 즉 원격 저장소의 데이터를 가져온 후에 로컬 파일과 합친다.
- 원격 저장소를 clone 하게 되면 로컬 저장소에 master 브랜치가 생긴다.
- 로컬 저장소의 master 브랜치는 자동으로 원력 저장소의 master 브랜치를 추적한다.
- 따라서 원격 저장소에서 가져온 데이터를 로컬 저장소의 master 브랜치와 합쳐진다.
예1) 원격 저장소의 파일을 가져와 로컬 저장소의 파일과 병합하기
$ git pull
git push [원격 저장소 이름] [로컬 브랜치 이름]:[원격 브랜치 이름]
- 로컬 저장소 브랜치를 원격 저장소로 업로드(push) 한다.
- 전제 조건
- 원격 저장소에 쓰기 권한이 있어야 한다.
- 아직 다른 사람이 push 한 적이 없다.
- 다른 사람이 push 한 적이 있다면, 먼저 원격 저장소의 데이터를 가져와서 merge 한 다음에 push 해야 한다.
예1) 로컬 저장소의 master 브랜치를 원격 저장소에 업로드 하기
$ git push --set-upstream origin master:master
$ git push -u origin master:master
예2) 로컬 저장소의 내용을 한 번 원격 저장소에 업로드 했다면
--set-upstream 옵션을 생략할 수 있다.
$ git push origin master:master
예3) 원격 브랜치 이름을 생략할 수 있다.
원력 브랜치 이름을 생략하면 로컬 브랜치 이름으로 업로드 된다.
$ git push origin master
예) 원격 서버를 지정하지 않으면 최근에 push 한 서버로 업로드 한다.
$ git push
git tag
- 존재하는 태그를 조회한다.
예1) 저장소에 존재하는 태그를 조회한다.
$ git tag
v0.1
v0.2
...
예2) 저장소에 있는 태그 중에서 v10.0 버전의 태그들만 검색하기
$ git tag -l 'v10.0*'
v10.0.0.1
v10.0.0.2
예3) 현재 저장소에 저장된 파일에 대해 태그 붙이기
- 마지막 커밋에 대해 태그를 붙인다.
- 태그를 만든 사람의 이름과 이메일, 날짜, 메시지도 저장한다.
- 이렇게 붙인 태그를 'Annotated 태그'라 부른다.
$ git tag -a [태그명] -m '태그 메시지'
$ git tag -a v0.1 -m 'my version 0.1'
예4) 현재 저장소에 저장된 파일, 즉 마지막 커밋에 대해 태그 붙이기
- 태그에 대한 추가 정보를 입력하지 않는다.
- 이렇게 붙인 태그를 Lightweight 태그'라 부른다.
$ git tag [태그명]
$ git tag v0.2
예5) 이전 커밋에 대해 태그 붙이기
$ git tag -a [태그명] [커밋 체크섬]
$ git log --pretty=oneline
75ff5353c41f3a33de4a7da91887d0ecbc2cbca6 (HEAD -> master, tag: v0.2) test..ok2
e08e7f0c4a5d068dcc20148e7e7b007958bd3b05 (tag: v0.1, origin/master, origin/HEAD) test..ok
7c239ac5c89bcca468cfd0f412bef104e25b071a okok
bb4aad9f4c000851f950feefdca4874cfa830734 ex03 편집, ex04 편집
5607c88f763a12557adb69442b054990a1487d4f ex03 편집
d166310b5c4502fc820bbab960094911466745e4 ex03 편집, ex04 편집
bfa6df7c89c245e750c7c59f3c6fb06dfa801a74 다시 커밋
c555b1b128453d18ac2a5d3493b79021dce3f470 HTML 내용 변경
...
$ git tag -a v0.0.1 c555b1b1 -m 'my version 0.0.1' <=== 중복되지 않는다면, 체크섬의 앞쪽 일부 값만 지정해도 된다.
$ git tag
v0.0.1 <=== 추가된 태그
v0.1
v0.2
예6) 로컬 저장소에 있는 태그를 서버에 공유하기
$ git push [원격저장소 이름] [태그 이름]
$ git push origin v0.1
Counting objects: 1, done.
Writing objects: 100% (1/1), 166 bytes | 166.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://github.com/kyung/test.git
* [new tag] v0.1 -> v0.1
예7) 원격 저장소에 없는 모든 로컬 저장소의 태그를 서버에 공유하기
$ git push origin --tags
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 658 bytes | 658.00 KiB/s, done.
Total 7 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/kyung/test.git
* [new tag] v0.0.1 -> v0.0.1
* [new tag] v0.2 -> v0.2
git show [태그명]
- 태그 정보와 커밋 정보를 모두 확인한다.
예1) 태그 v0.1의 정보와 커밋 정보를 확인하기
$ git show v0.1
tag v0.1
Tagger: KyungHan Park <han156456@naver.com> <=== 태그 붙인 사람 정보
Date: Mon Aug 27 00:03:56 2018 +0900 <=== 태그 붙인 날짜
my version 0.1 <=== 태그 붙일 때 작성한 메시지
commit e08e7f0c4a5d068dcc20148e7e7b007958bd3b05 (HEAD -> master, tag: v0.1, origin/master, origin/HEAD)
Author: KyungHan Park <han156456@naver.com>
Date: Sun Aug 26 23:29:24 2018 +0900
test..ok
...
예2) Lightweight 태그의 정보를 확인하기
- 태그를 저장할 때 메시지를 지정하지 않았으면 태그 정보가 출력되지 않는다.
$ git show v0.2-lw
<=== 태그를 붙인 사람의 정보가 없다.
commit 75ff5353c41f3a33de4a7da91887d0ecbc2cbca6 (HEAD -> master, tag: v0.2)
Author: KyungHan Park <han156456@naver.com>
Date: Mon Aug 27 00:13:30 2018 +0900
test..ok2
...
git checkout -b [새브랜치명] [태그명]
- 작업 디렉토리의 내용물을 특정 태그의 커밋 버전으로 바꾼다.
- 태그가 가리키는 커밋의 파일들을 가져오려면 브랜치를 생성해야 한다.
- 특정 태그가 붙은 커밋 버전으로 브랜치를 만들고 작업 디렉토리는 그 브랜치의 파일들로 바꾼다.
예1) v0.1 태그가 붙은 커밋 파일들로 version2 라는 이름의 브랜치를 만들고 작업 디렉토리에 가져오기
$ git checkout -b version2 v0.1
Switched to a new branch 'version2' <=== 작업 디렉토리의 파일들이 변경된다.
git config –global alias.별명 [원래명령어]
- 자주 사용하는 명령어에 대해 별명을 부여한다.
예1) status 명령과 status --short 대해 별명을 지정하기
$ git config --global alias.st status
$ git config --global alias.st2 'status --short'
$ git st <=== 'git status' 와 같다.
$ git st2 <=== 'git status --short' 와 같다.
예2) Git 별명을 이용하여 'nano' 편집기를 실행하기
$ git config --global alias.별명 '!실행파일명'
$ git config --global alias.nn '!nano'
$ git nn
[nano 편집기가 실행될 것이다.]
Leave a comment