길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Git 기초 명령어
Git

Git 기초 명령어

2020. 6. 22. 21:09

1. 정보 설정 

  • git config --global user.name "자신의 닉네임"
  • git config --global user.email "자신의 이메일"

 

2. add : index에 파일 내용 추가

  • git add <file> : file을 index에 추가
  • git add -u : Untracted File을 제외한 수정/삭제된 파일만 index에 추가

 

3. log : commit log 출력

  • git log -p : 로그에서 출력되는 버전 간의 차이점을 출력
  • git log --reverse : commit을 역순으로 출력
  • git log <branch1>..<branch2> : 브랜치 간에 비교
  • git log --branches : 로그에 모든 브랜치 표시 (--graph : 그래프로 표현, --decorate : 브랜치 명을 표시, --oneline : 한 줄로 표시)

 

4. diff

  • git diff : index의 내용과 working copy의 내용을 비교
  • git diff <commit1>..<commit2> : 버전 간의 차이점을 비교
  • git diff : git add 하기 전과 add 한 후의 파일 내용을 비교
  • git diff <branch1>..<branch2> : 브랜치 간의 코드를 비교

 

5. reset 

  • git reset <commit> : 현재 branch의 HEAD를 해당 commit으로 재설정
  • --soft : index 보존 (add한 상태, statged 상태), 워킹 디렉터리의 파일 보존, 즉 모두 보존.
  • --mixed(기본 옵션) : index 취소 (add 하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존
  • --hard : index 취소 (add 하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제, 즉 모두 취소
  • git reset HEAD <file> : file을 unstaged 상태로 변경

6. revert

  • git revert "버전 id" : 버전 id의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령

 

7. branch

  • git branch : 브랜치 목록을 출력
  • git branch "새로운 브랜치 이름" : 브랜치를 생성
  • git branch -d : 브랜치 삭제
  • git branch -D : 병합하지 않은 브랜치를 강제 삭제

 

8. checkout

  • git checkout "전환하려는 브랜치 이름" : 브랜치 전환(checkout)
  • git checkout -b "생성하고 전환할 브랜치 이름" : 브랜치를 생성하고 전환
  • git checkout -- <file> : 수정된 파일의 내용을 최근 커밋된 버전의 내용으로 복원

 

9. merge

  • git checkout A, git merge B : B 브랜치를 A 브랜치로 병합 (A <- B)

 

10. stash

  • 다른 브랜치로 checkout 해야 하는데 현재 브랜치의 작업이 끝나지 않은 경우, stash 명령어를 이용하면 작업중이던 파일을 임시로 저장해두고 현재 브랜치의 상태를 마지막 커밋의 상태로 초기화 할 수 있음. 즉, 다른 브랜치에서 작업을 끝낸 후에 작업중이던 브랜치로 복귀했을 때, 이전에 작업하던 내용을 복원할 수 있음 
  • stash는 modified이면서 Tracked 상태(과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태)인 파일, Staging Area에 있는 파일을 보관해두는 장소이다.
  • 어떤 브랜치에서 Stash 하고 다른 브랜치로 옮기고서 거기에 Stash를 복원할 수 있다. 그리고 꼭 워킹 디렉토리가 깨끗한 상태일 필요도 없다. 워킹 디렉토리에 수정하고 커밋하지 않은 파일들이 있을 때도 Stash를 적용할 수 있다. 만약 충돌이 있으면 알려준다.
  • git stash -u : 추적중이지 않은 파일도 Stash에 저장
  • git stash : 새로운 stash를 스택에 만들어 하던 작업을 임시로 저장
  • git stash list : 여러번 stash한 경우, 저장한 stash 목록을 확인
  • git stash apply : 가장 최근의 stash를 가져와 적용
  • git stash apply [stash 이름] : stash 이름 (ex.stash${2})에 해당하는 stash를 적용
  • git stash apply --index : staged 상태까지 복원
  • git stash drop : stash 제거 (apply 옵션은 단순히 stash를 적용하는 것으로, 해당 stash는 스택에 여전히 남아있음)
  • git stash pop : 적용과 동시에 스택에서 해당 stash를 제거 (apply + drop)
  • git stash clear : stash 기록 모두 제거

11. push

  • git push -u <remote> <branch> : upstream 브랜치 설정 (git push --set-upstream <remote> <branch>와 동일)

 

12. clone : 저장소 복제 (Clone a repository into a new directory.)

  • git clone <repository url> : repository clone
  • git clone -b <branch> --single-branch <repository url> : 특정 브랜치만 clone

 

13. tag : 태그 객체 생성, 삭제, 확인, 나열 (Create, list, delete or verify a tag object signed with GPG)

  • (annotated tag :,  light weight tag : )
  • git tag : tag 목록 출력
  • git tag <tagname> <commit> : tag 생성 (light weight tag)
  • git tag -a <tagname> -m <msg> <commit> : tag 생성 (annotated tag)
  • git tag -d <tagname> : tag 삭제
  • git tag -v <tag-name> : tag 확인
  • git tag <repository> --tags : 모든 tag push (--tags 옵션을 명시하지 않으면 tag가 push되지 않음)

 

기타

  • git status : 프로젝트 폴더의 상태를 확인
  • git init : 현재 디렉토리를 git의 (버전) 저장소로 만듦.
  • --help 옵션을 통해 메뉴얼을 확인할 수 있음
  • git rev-parse --show-toplevel로 git root 디렉토리를 찾을 수 있음.

 

참조 블로그

  • Stash https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning#_git_stashing
  • Git 기초 명령어 (https://medium.com/@pks2974/%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B8%B0%EC%B4%88-git-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0-533b3689db81)
  • 생활코딩 (https://opentutorials.org/course/2708/152423)
  • reset (https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html)   
  • reset과 revert의 차이점을 설명하는 카툰 (https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EB%B0%94%EB%B3%B4%EB%93%A4-git-back-to-the-future/)

 

 

'Git' 카테고리의 다른 글

.gitignore가 작동하지 않을 때 대처법  (0) 2020.08.18
Github ssh key 등록  (0) 2020.06.24
Github Tip!  (2) 2020.06.22
Git Error 처리  (0) 2020.06.22
    'Git' 카테고리의 다른 글
    • .gitignore가 작동하지 않을 때 대처법
    • Github ssh key 등록
    • Github Tip!
    • Git Error 처리
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바