자주 사용하는 GIT 커맨드 모음

Mar 19, 2017

자주 사용하는 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