자주 사용하는 GIT 커맨드와 팁을 정리했다.
기본
# 원격 저장소 소스 가져오기
git clone https://domain/project.git
# git 버전관리에 추가하기
git add 파일명
# 버전 관리에서 제외
git rm --cached 파일명
# 변경된 파일 최신 커밋된 파일로 되돌리기.
git checkout -- 파일명
# 특정 해시코드로 파일 가져오기
git show ce425c1f4fad4f370b9c88510c36d5e26c847f7c:./README.md > ./README.md
# svn의 export 처럼 zip 파일로 저장
git archive --format zip --output /full/path/to/zipfile.zip master
# push 할 때 기본 업스트림 지정하기
git push --set-upstream myrepo master
# 잘못 등록된 식별정보 수정
git commit --amend --author='Your Name'
# 디렉터리 보기
git ls-tree --full-tree -r HEAD
git ls-tree HEAD ./src
# 설정 리스트 보기
git config --list
tag
# 태깅. 모든 버전보기
git tag -l
git tag -l v*
# 태깅하기
git tag v1.0.0
# 원격 저장소의 태그 지우기
git push --delete origin v1.5.0
# 태그 포함해서 푸시
git push --tags
# 태그이름으로 체크아웃
git checkout v2.0.0
# 현재 어떤 태그를 선택했는지 보기
git describe --tags
branch
# 현재 브랜치 상태 보기
git branch
# 브랜치 상태 보기
git remote show origin
# 원격의 브랜치 보기
git branch -r
# 원격 브랜치로부터 가져오기
git checkout -b 생성할브랜치이름 원격브랜치이름
# 원격 브랜치로부터 가져오기(브랜치이름 그대로 사용할 경우)
git checkout -t origin/원격브랜치이름
# 브랜치 삭제
git branch -d v1.0.0
# 브랜치의 업스트림 변경하기 anoter_origin -> origin
git branch -u origin/master
Branch master set up to track remote branch master from origin.
remote
# 원격 저장소 모두 보기
git remote show
# 원격 저장소 추가하기
git remote add origin http://git-server-domain/git-path.git
# 원격 저장소 이름 바꾸기
git remote rename origin redmine
# 특정 원격 저장소 보기
git remote show origin
# 원격 저장소 제거
git remote remove origin
# 모든 원격 저장소에 푸시하기
log
# 파일에 관한 로그만 표시
git log --name-only
# 최근 로그 2개만 보기
git log -p -2
# diff 보기
git log -p 파일명
# 삭제된 파일 diff를 파일로 출력
git log -p -- 삭제된파일명 > a.txt
# 모든 브랜치 로그 보기
git log --all
사용자 정보 추가하기
git config --global user.name "Your Name"
git config --global user.email you@example.com
이미 추가한 파일 취소하기
git reset -- ./src
프로토콜 바꾸기
bower에서 git 프로토콜을 사용하면 잘 안되는 경우가 있는데, https로 바꿨더니 잘 동작했다.
git config --global url."https://".insteadOf git://
버전관리에서 제외하는 방법
.gitignore 파일에 제외할 파일, 디렉터리 목록을 작성한다. 필요한 디렉터리에 이 파일을 넣어두면 된다.
다음은 예제다.
node_modules
bower_components
.DS_Store
전역으로 설정하는 방법:
git config --global core.excludesfile ~/.gitignore_global
이렇게 설정하고, .gitignore_global 파일도 .gitignore와 동일하게 작성한다.
윈도에서 LF 관련 WARN 뜨는 문제
윈도에서 파일에 Unix 파일로 저장되었을 때 다음과 같은 메시지가 발생한다.
LF will be replaced by CRLF in git - What is that and is it important? [duplicate]
http://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is-it-important
다음 명령을 통해 이 메시지를 없앨 수 있다.
git config core.autocrlf false
git config --global core.autocrlf false
push.default is unset WARNING
다음 메시지가 발생하는 경우가 있다.
push.default is unset WARNING
다음 명령으로 해결할 수 있다.
git config --global push.default simple
Dropbox를 GIT 서버로 사용하기
# dropbox에 GIT 프로젝트들이 위치할 디렉터리 생성
mkdir /dropbox/gitrepo
cd /dropbox/gitrepo
# 프로젝트 디렉터리 생성
mkdir project.git
cd project.git
git init --bare
# 작업 디렉터리로 가서 저장소와 연결
cd /workspace/project
git remote add dropbox file:///dropbox/gitrepo/project.git
git push dropbox master
error setting certificate verify locations
여러 버전의 git이 설치되어 있어서 하나만 남기고 지우니 다음과 같은 에러가 발생했다.
λ git push
fatal: unable to access 'https://user_id@domain/project.git/': error setting certificate verify locations:
CAfile: C:/Program Files (x86)/Git/mingw32/ssl/certs/ca-bundle.crt
CApath: none
먼저 ca-bundle.crt 파일이 있는 경로를 찾아낸다. 그리고 관리자 권한으로 커맨드 창을 열고 다음을 실행한다.
git config --system http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
만약 관리자 권한이 없다면 다음 에러가 발생한다.
error: could not lock config file c:\Program Files\Git\mingw64/etc/gitconfig: Permission denied