ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • git command
    Computer Science/Git 2018. 8. 20. 12:42
    반응형

    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











    반응형
Designed by Tistory.