본문 바로가기
Computer Science/Git

git command

by happy coding! 2018. 8. 20.
반응형

git command




구조


코드는 아래 세 단계에 걸쳐 저장된다.


1. 스테이징 

2. 커밋 

3. 원격저장소


※ 기본 원격 저장소를 origin 이라고 부른다.

※ git 의 저장소는 3가지 단계로 나누어진다. 커밋한 소스가 보관되는 저장소, 현재 프로젝트 파일들이 

   있는 작업트리, 저장소와 작업트리 사이의 버퍼 영역으로 커밋될 대상이 저장되는 스테이징 영역

※ 형상관리를 하지 않을 파일은 .gitignore 파일에 추가한다.

 git add {파일명} 으로 파일을 스테이징 상태에 넣는다.

 git commit 으로 스테이징 상태에 있는 모든 변경사항을 커밋한다. 여기까지가 로컬에서의 작업

 git push 로 커밋된 저장소를 원격 저장소로 밀어넣는다.




환경  설정


git config --global --list : 현재 설정 정보 조회. --global 옵션은 전역설정에 대한 옵션. 현재 프로젝트에만 적용할 때는 주지 않음.


git config --global user.name "사용자명" : 사용자명을 등록


git config --global user.email "이메일주소" : 이메일 주소를 등록


git config --global color.ui "auto" : 터미널에 표시되는 메시지에 칼라를 표시해줌




기본 명령어


git init : 현재 디렉토리에 git 저장소 생성


git clone {url} : 원격 저장소로부터 복제


git status : 변경 사항 체크


git add {파일명} : 특정 파일 스테이징 


git add * : 변경된 모든 파일 스테이징


git commit -m "{변경 내용}" : 커밋. -m은 커밋메시지를 주는 옵션으로 여러 줄의 커밋메시지를 쓸 경우 -m을 여러개 사용


git push origin master : 원격으로 보내기


git remote add origin {원격서버주소} : 원격저장소 추가


git --version : 현재 git의 버전을 확인


git mv {파일명} {새파일명} : 기존에 존재하는 파일을 새파일로 이동. 변경이력은 그대로 유지


git checkout --{파일명} : 아직 스테이징이나 커밋을 하지 않은 파일의 변경내용을 취소하고 이전 커밋상태로 돌림


git archive --format=tar --prefix=폴더명/브랜치 혹은 태그 | gzip > 파일명.tar.gz 

git archive --format=zip --prefix=폴더명/브랜치 혹은 태그 > 파일명.zip


: 해당 브랜치나 태그를 압축파일로 만듬. --prefix를 주면 압축파일이 해당 폴더안에 생성됨


git rev-parse --show-toplevel : git 저장소 내에서 입력하면 루트 디렉토리를 표시




Commit


git rebase -i HEAD~4 : 최신 4개의 커밋을 하나로 합치기


git commit --amend : 마지막 커밋메시지 수정(ref)

git add {변경한 파일명} / git commit -m "{변경 내용}" : 간단한 commit 방법 


git commit -C HEAD -a --amend : 지정한 커밋의 로그메시지를 다시 사용하여 기존 커밋을 수정


git diff : 스테이징 영역과 현재 작업트리의 차이점을 표시




Commit 이력 확인


git log : 모든 커밋 로그 확인


git log -3 : 최근 3개 커밋 로그 확인


git log --pretty=oneline : 각 커밋을 한 줄로 표시




Commit 취소


git reset HEAD^ : 마지막 커밋 삭제


git reset --hard HEAD : 마지막 커밋 상태로 되돌림


git reset HEAD * : 스테이징을 언스테이징으로 변경, ref




원격저장소


git fetch : 원격저장소의 변경사항을 가져와서 원격브랜치를 갱신


git pull : git fetch에서 하는 원격저장소의 변경사항을 가져와 local branch에서 합치는 작업


git push : 현재 local branch와 같은 이름의 브랜치에 push


git remote rm {이름} : 원격저장소를 제거



Branch


git checkout better_branch

git merge --strategy=ours master   # keep the content of this branch, but record a merge

git checkout master

git merge better_branch               # fast-forward master up to the merge


: master 브랜치를 특정 커밋으로 옮기기




Branch 목록


git branch : 로컬


git branch -r : 리모트


git branch -a : 로컬, 리모트 포함된 모든 브랜치 보기




Branch 생성


git branch new master : master -> new 브랜치 생성

git push origin new : new 브랜치를 리모트로 보내기




Branch 삭제


git branch -D {삭제할 브랜치 명} : local

git push origin :{the_remote_branch} : remote




빈 Branch 생성


git checkout --orphan {새로운 브랜치 명}

git commit -a : 커밋해야 새로운 브랜치 생성됨

git checkout -b new-branch : 브랜치 생성과 동시에 체크아웃




리모트 Branch 가져오기


git checkout -t origin/{가져올 브랜치명} : ref




Branch 이름 변경


git branch -m {new name} : ref




Tag


git tag -a {tag name} -m {tag message} {commit hash} : 태그 생성

git tag {tag name} {tag name} -f -m "{new message}" : Edit tag message




태그 삭제


git tag -d {tag name}

git push origin : tags/{tag name} : remote




태그 푸시


git push origin --tags 

git push origin {tag name}

git push --tags




파일 삭제


git rm --cached --ignore-unmatch [삭제할 파일명]




최적화


git gc

git gc --aggressive




Alias


~/.gitconfig 파일을 설정하여 깃 명령어의 앨리어스를 지정할 수 있음

~/.gitconfig > alias 부분:


[alias]


br = branch

co = checkout

rb = rebase

st = status

cm = commit 

pl = pull

ps = push

ad = add

tg = tag

df = diff




[출처] 


https://github.com/jeonghwan-kim/git-usage

https://blog.outsider.ne.kr/572











반응형

댓글