Space Shift !

Git 본문

레벨업(level up)/Programming

Git

레이필 2022. 12. 5. 15:34

git 커맨드는 git [커맨드 이름] 형태로 구성된다. 필요에 따라 - 또는 -- 키를 사용하여 옵션지정을 할 수 있다.

  • git init : 저장소(repository) 생성
  • git config user.name [작성자 이름] : 작성자 이름 설정
  • git config user.email [이메일 계정] : 작성자 이메일 설정
  • git config --list : 저장소 설정 전체 출력
  • git config --get [설정항목] : 일부 설정항목만 출력(ex : git config --get user.name)
  • git help [커맨드 이름] : 도움말
  • git의 작업영역 3가지
    • Working directory, Staging area, Repository
  • git의 파일상태 구분 3가지
    • Modified, Staged, Committed
  • git reset [파일명] : Staging area에 올렸던 파일 내리기
  • .gitignore : 이력관리 대상에서 제외할 경로나 파일 지정
  • git status : 저장소의 상태정보 출력
  • git add [파일이름] : 해당 파일을 staging area에 올리기
  • git add [디렉토리 명] : 해당 디렉토리 내에 수정된 모든 파일들을 staging area에 올리기
  • git add . : working directory 내에 수정된 모든 파일들을 staging area에 올리기

 

  • git commit : 이력 저장(commit)
  • git commit -m "[메시지]" : vim을 사용하지 않고 인라인으로 메시지를 추가하여 commit
  • git commit -am "[메시지]" : add와 commit을 일괄적으로 진행

 

  • git status : 저장소 파일의 상태정보 출력
  • git status -s : 파일 상태정보를 간략하게 표시

 

  • git log : 저장소의 commit이력을 출력
  • git log --pretty=oneline : 각 commit을 한줄로 출력(--pretty 옵션 사용)
  • git log --oneline : 각 commit을 한줄로 출력
  • git log --decorate=full : 브랜치나 태그정보를 상세히 출력
  • git log --graph : 그래프 형태로 출력

 

  • git show : 가장 최근의 commit 정보 출력
  • git show [commit hash] : 해당 commit의 정보 출력
  • git show HEAD : HEAD가 참조하는 commit의 정보 출력
  • git show HEAD^^^ : HEAD를 기준으로 3단계 이전의 commit정보 출력
  • git show HEAD~[n] : HEAD를 기준으로 n단계 이전의 commit정보 출력
  • git diff : 최근 commit과 변경사항이 발생한(Unstaged) 파일들의 내용비교
  • git diff --staged : 최근 commit과 Staging area의 파일들 간의 변경사항 출력
  • git diff [commit hash1] [commit hash2] : 두 commit의 파일들 간의 변경사항 출력
  • git reset : Staging area의 파일 전체를 unstaged 상태로 되돌리기
  • git reset [파일명] : 해당 파일을 unstaged 상태로 되돌리기
  • git commit --amend : 최근 commit을 수정하기
  • git commit --amend -m "[commit 메시지]" : 해당 메시지로 commit 수정하기
  • git checkout [commit hash] : 해당 commit으로 파일상태 변경
  • git checkout - : HEAD가 이전에 참조했던 commit으로 상태변경
  • git checkout master : HEAD가 master를 참조
  • git checkout HEAD~n : HEAD를 기준으로 n단계 이전 commit으로 상태변경
  • git reset [commit hash] : 해당 commit으로 브랜치의 참조를 변경
  • git reset –-hard [commit hash] : working directory, staging area, commit 모두 reset
  • git reset –-mixed [commit hash] : working directory 유지, staging area, commit reset , default option
  • git reset –-soft [commit hash] : working directory, staging area 유지, commit reset
  • git reset HEAD^ : HEAD를 기준으로 직전의 commit으로 reset
  • git reset HEAD~[정수] : HEAD를 기준으로 정수 값 단계 전 commit으로 reset

 

  • git reflog : HEAD가 참조한 commit 이력을 공개
    • 브랜치(branch) : 저장소(repository) 내의 독립적인 관리영역
    • master 브랜치 : 저장소를 처음 생성할 때 만들어지는 브랜치
    • master : 해당 브랜치의 끝(최신 commit)을 참조하는 개체
    • HEAD : 어떤 commit을 가리키는 개체, HEAD가 이전 commit을 참조하면 Working directory의 내용이 이전 commit의 내용으로 변경됨
    • HEAD는 참조를 참조할 수 있음. (master를 참조하거나 commit을 직접 참조 가능)
    • HEAD는 git에서 사용되는 공식 명침임. master, origin 또한 공통적으로 사용되는 명칭이나 필수는 아님(다른 이름으로 변경가능)
  • git remote : 추가된 원격저장소 리스트 출력
  • git remote -v (--verbose) : 원격저장소 리스트 출력
  • git remote add [원격 저장소 이름] [원격 저장소 주소] : 해당 이름으로 원격 저장소 등록
  • git remote rm [원격저장소 이름] : 해당 원격 저장소를 등록 리스트에서 삭제
  • git push -u (--set-upstream-to) [원격 저장소 이름] [로컬 브랜치 이름] : 로컬 저장소의 브랜치가 원격 저장소를 추적하도록 설정하고 파일들을 원격 저장소로 push
  • git push [원격 저장소 이름] [로컬 브랜치 이름] : 로컬 저장소의 변경사항을 원격 저장소로 업로드
  • git push : upstream(-u) 설정 후 인자 생략 가능
  • git pull [원격 저장소 이름] [원격 브랜치 이름] : 원격 저장소의 정보를 현재 로컬 브랜치에 가져와서 병합(fetch + merge)
    • 예) 원격 저장소의 브랜치가 origin/master이면 git pull origin master
    • = git fetch origin and git merge origin/master
  • git pull : upstream(-u) 설정 후 인자 생략 가능
  • git tag : 로컬 저장소의 모든 tag를 조회
  • git tag [tag명] : 현재 commit에 tag를 생성 (Lightweight tag)
  • git tag [tag명] [commit ID] : 해당 commit에 tag를 생성 (Lightweight tag)
  • git tag -a [tag명] –m “[tag message]” [commit ID] : 메시지를 추가하여 tag 생성 (Annotated tag)
  • git tag -am [tag명] “[tag message]” : 현재 commit에 메시지를 추가하여 tag 생성 (Annotated tag)
  • git show [tag명] : 해당 tag가 부착된 commit의 상세정보 확인
  • git push --tags : 생성된 전체 tag를 원격 저장소에 push ( = git push origin --tags)
  • git push [tag명] : 해당 tag를 원격 저장소에 push ( = git push origin “[tag명]”)
  • git tag –d [tag명] : 해당 tag 삭제
  • git push –d [tag명] : 원격 저장소의 해당 tag 삭제
  • git revert [commit hash] : 해당 commit을 되돌리기
  • git revert --no-edit [commit hash] : revert commit messege 수정하지 않고 default 사용
  • git revert [commit hash1]..[commit hash2] : 해당 구간만큼 commit 되돌리기. commit ID1은 해당되지 않음
  • git clone [원격 저장소 주소] : 원격 저장소의 내용을 복제
  • git diff origin/master master : 원격 저장소의 master와 로컬 저장소의 master 브랜치의 참조 commit의 차이 비교
  • git merge --abort : merging 작업 종료
  • git fetch : 원격 저장소의 내용을 로컬 저장소로 가져오기
  • git diff origin/master master : 원격 저장소의 master와 로컬 저장소의 master 브랜치의 참조 commit의 차이 비교
  • git merge origin/master : 원격 저장소의 master 브랜치의 내용을 현재 로컬 브랜치에 병합
  • git stash : 인덱스 영역에 트래킹 되는 파일을 임시영역에 저장하고, modified부분 Working directiory에서 제거(기본 명칭 WIP로 저장됨)
  • git stash –u : 새롭게 추가된 파일(untracked)도 함께 임시영역에 저장
  • git stash save [저장명칭] : 저장명칭을 주어 저장
  • git stash –m “[메시지]” : 메시지를 기록하여 저장
  • git stash list : stash 기록 확인
  • git stash apply ; 가장 최근의 작업내용 불러오기
  • git stash apply [stash명] : stash명에 해당하는 저장내용 반영
  • git stash drop : 가장 최근의 stash 제거
  • git stash drop [stash명] : 해당 이름의 stash 제거
  • git branch : 브랜치 목록 표시
  • git branch [브랜치명] : 해당 브랜치 명으로 브랜치 생성
  • git checkout [브랜치명] : 해당 브랜치로 전환
  • git checkout –b [브랜치명] : 브랜치 생성과 동시에 전환
  • git branch -m [브랜치명] [새로운 브랜치명] : 브랜치명 변경
  • git branch –d [브랜치명] : 해당 브랜치 삭제
  • git merge [브랜치명] : 현 브랜치에 해당 브랜치의 내용 병합
  • git merge --ff [브랜치명] : fast-forward 관계에 있으면 commit을 생성하지 않고 현재 브랜치의 참조 값 만 변경(default)
  • git merge --no-ff [브랜치명] : fast-forward 관계에 있어도 merged commit 생성
  • git merge --squash [브랜치명] : fast-forward 관계에 있어도 merged commit 생성, merging 브랜치 정보 생략
  • git rebase [브랜치명] : 현재 브랜치가 해당 브랜치(브랜치명)에부터 분기하도록 재배치
  • git rebase --continue : 충돌 수정 후 재배치 진행(commit 대신)
  • git rebase --abort : rebase 취소

$ git clone https://[ID]:[PASSWORD or Access Token]@github.com/[ID]/myrepo.git

Comments