Git 명령어 정리

스브코·2022년 1월 20일
0
post-custom-banner

Git 명령어 정리


  • 환경설정

    • git config --global user.name “이름” : 유저이름 설정
    • git config -—global user.email “메일주소” : 메일주소 설정
    • git config user.name : 설정된 유저이름 확인
    • git config user.email : 설정된 메일주소 확인
    • git config -—global core.autocrlf input : (MAC) 줄바꿈 문자열 자동 수정
    • git config -—global core.autocrlf true : (WINDOW) 줄바꿈 문자열 자동 수정
    • git config -—global alias.cm commit : git commit 대신 git cm 으로 줄임 (다른 명령어들도 동일한 방식으로 적용할 수 있음)

  • Git 초기화, 삭제

    • git init : 해당 프로젝트를 git의 관리 아래에 두도록 초기화 설정 (.git 이라는 숨김폴더와 파일 생성)
    • git rm -rf .git : .git 폴더를 삭제함으로써, git과 연결을 해제

  • add
    • git add {파일명.확장자} : 해당 파일을 staging area에 등록하겠다. (tracked 상태로 만든다.)
    • git add . : 폴더 내의 모든 파일을 staging area에 등록하겠다.

  • rm —cached
    • git rm -—cached {파일명.확장자} : staging area에 있는 파일을, 다시 untracked 상태로 돌린다.

  • .gitignore
    • 폴더 내에서 git에 올라가면 안되는 설정파일 등을 저장해놓는 파일
    • *.properties : 확장자가 properties인 모든 파일들은 git에 추가하지 않음
    • config/ : config 폴더 안의 파일들을 추가하지 않음
    • config/*.properties : config 폴더 안의 properties 파일들을 추가하지 않음

  • status
    • 작업중인 상태를 확인하고 싶을 때 사용하는 명령어
    • git status : git stauts —long 이 실행된다. 상태를 상세히 보여준다.
    • git status -s : 간략한 정보를 보여준다.

  • diff
    • 정확하게 어떤 내용이 수정되었는지 확인할 수 있다.
    • git diff : add 되지 않은 파일의 변경사항을 확인할 수 있다.
    • git diff --cached : add해서 staging area에 있는 파일들의 변경사항을 확인할 수 있다.
    • git diff -—staged : 위 명령어와 동일하다.
    • git diff {브랜치1}..{브랜치2} : 브랜치1과 브랜치2의 차이를 확인할 수 있다.

  • commit
    • 현재까지의 변경사항을 버전으로 만든다. (git repository에 등록한다.)
    • git commit : 별도의 창이 열리고, Title / Description을 입력할 수 있는 창이 나온다. 입력하면 완료.
    • git commit -m "메시지 내용" : 현재까지 add된 파일들을 메시지 내용과 함께 commit 한다.
    • git commit -am “메시지 내용” : add 와 commit을 동시에 한다.

  • rm, mv
    • 그냥 rm 기능으로 파일을 삭제할 경우, git add를 해주어야 commit이 가능하다.
    • 마찬가지로 그냥 mv 기능으로 파일명을 변경하는 경우 git add를 해주어야 staging area에 포함된다.
    • git rm {파일명} : git rm 을 사용할 경우, 파일 삭제 후 add 까지 동시에 진행된다.
    • git mv {파일명} {새로운 이름} : 파일명 변경 후 add까지 동시에 진행된다.

  • log
    • git log : commit Log 를 간단하게 확인할 수 있다. 가장 위에 있는 것이 최신이다.
    • git log --reverse : 최신 커밋이 가장 아래로 오도록 뒤집는다.
    • git log -—patch : 자세한 commit Log를 볼 수 있다. 어떤 파일이 어떻게 변경되었는지 등
    • git log -p : 위 명령어와 동일
    • git log --oneline : 한 줄로 커밋 메시지와 커밋을 확인할 수 있다.
    • git log -5 : 최근 5개의 커밋만 보겠다.
    • git log --oneline -5 : 최근 5개의 커밋을 oneline으로 보겠다.
    • git log --author="작성자" : 해당 작성자의 커밋만 보겠다.
    • git log —-before=”2021-12-25” : 해당 날짜(2021-12-25) 이전의 커밋만 보겠다.
    • git log -—grep=”커밋메시지” : 해당 커밋 메시지가 포함된 커밋을 보여준다.
    • git log {파일명} : 해당 파일의 커밋 로그를 볼 수 있다.
    • git log -p {파일명} : 해당 파일의 커밋 로그를 자세히 볼 수 있다.
    • git log {브랜치1}..{브랜치2} : 브랜치1 과 브랜치2 간의 커밋 정보만 확인할 수 있다.

  • tag
    • 커밋이 많을 때, 쉽게 찾기 위한 즐겨찾기 같은 기능
    • 주로 최종 배포버전의 ‘버전’을 나타낼 때 많이 사용한다.
    • git tag {태그명} : 현재 상태에서, 태그를 추가한다.
    • git tag {태그명} {커밋해시코드} : 해당 해시코드의 커밋에 태그를 추가한다.
    • git tag {태그명} {커밋해시코드} -am {설명} : 해당 해시코드의 커밋에 태그와 설명도 추가한다.
      (-a : annotate, -m : message)
    • git tag : 현재 프로젝트의 모든 태그들을 확인한다.
    • git tag -l “문자열” : 특정한 문자열을 포함한 태그를 모두 확인한다.
    • git tag -d {태그명} : 해당 태그를 삭제한다.
    • git push origin {태그명} : 해당 태그명에 해당하는 커밋을 push 한다.
    • git push origin —tags : 모든 태그에 해당하는 커밋을 push 한다.
    • git push origin —delete {태그명} : 해당 태그의 커밋을 삭제한다.

  • show
    • git show {커밋해시코드} : 해당 커밋의 정보를 자세히 확인할 수 있다.
    • git show {커밋해시코드}:{파일명} : 해당 커밋에서, 해당 파일의 정보만 확인할 수 있다.
    • git show {태그명} : 해당 태그를 가진 커밋의 정보를 자세히 확인할 수 있다.

  • branch
    • git branch : 로컬에 있는 브랜치 정보를 확인한다.
    • git branch -all : 로컬 및 원격 저장소에 있는 브랜치 정보를 확인한다.
    • git branch {브랜치명} : 새로운 브랜치를 생성한다.
    • git branch -v : 각 브랜치의 최신 버전(커밋)을 확인할 수 있다.
    • git branch --merged : 현재 브랜치와 동일한 (merge 된) 상태의 브랜치를 확인할 수 있다.
    • git branch --no-merged : 현재 브랜치와 merge되지 않은 별도 작업 branch를 확인할 수 있다.
    • git branch -d {브랜치명} : 브랜치를 삭제한다.
    • git push origin —-delete {브랜치명} : 원격 저장소에서 해당 브랜치를 삭제한다.
    • git branch --move {브랜치명} {새로운 브랜치명} : 새로운 브랜치명으로 브랜치 이름을 변경한다.

  • switch
    • Branch 이동 시 사용한다.
    • git switch {브랜치명} : 해당 브랜치로 이동한다.
    • git switch -C {브랜치명} : 새로운 브랜치를 만들면서 이동한다.

  • checkout
    • Branch를 이동하거나, 특정 커밋 시점으로 이동할 때 등 여러 곳에서 사용한다.
    • 너무 많은 기능을 담고있으므로, 최근에는 여러 명령어로 분리해서 사용한다.
    • git checkout {태그명} : 해당 태그명의 커밋 시점으로 이동한다.
    • git checkout {브랜치명} : 해당 브랜치로 이동한다.
    • git checkout -b {브랜치명} : 해당 브랜치명의 브랜치를 생성한다.
    • git checkout -b {브랜치명} {태그명} : 해당 브랜치명의 브랜치를, 태그명과 함께 생성한다.

  • merge
    • git merge {브랜치명} : 해당 브랜치의 커밋을 병합한다. fast forward 방식이므로 master 브랜치에 변경사항이 없다면 즉시 병합 후 해당 브랜치를 삭제하며, 병합된 브랜치의 기록은 삭제된다. (master 브랜치에 변경사항이 있다면 no fast forward로 진행된다.)
    • git merge --no-ff {브랜치명} : 해당 브랜치의 커밋을 병합한다. no fast forward 방식으로, 병합 후에도 해당 브랜치는 삭제되지 않으며 병합되었다는 것이 commit 기록으로 남게된다.

  • rebase
    • git rebase master {브랜치명} : 브랜치의 파생 지점을, master의 최신 커밋 지점으로 변경한다.
    • git rebase —onto master {브랜치1} {브랜치1-브랜치2} : 브랜치에서 뻗어나간 브랜치2의 파생지점을 master로 변경해준다. (즉, 브랜치2의 시작지점을 master로 변경한다. 이렇게 하면 브랜치1의 작업 내용이 필요 없을 경우 버릴 수도 있고, 브랜치1보다 브랜치2를 먼저 master에 merge하고 싶을 때 사용할 수 있다.)
    • git rebase -i {커밋해시코드} : 해당 커밋 이후의 모든 커밋들을 수정할 수 있는 명령어
      • pick : 그대로 사용
      • reword : 메시지만 변경
      • edit : 변경사항을 바꾸고자 할 경우 사용
      • squash : 여러 커밋을 하나로 묶어줌
      • fixup : 메시지를 남기지 않으면서 하나로 묶어줌
      • exec : shell 명령어를 직접 사용하고 싶을 때
      • break : 해당 커밋에서 멈추고싶을 때
      • drop : 삭제할 때

  • cherry-pick
    • git cherry-pick {커밋해시코드} : 작업 브랜치에서, 해당 커밋의 내용만 가져올 수 있다. (작업 브랜치에서 merge되지 않은 커밋이 3개 있을 경우, 나머지 2개는 무시하고 1개만 가져올 수 있다.)

  • stash
    • git stash : 현재까지의 작업 내용을 임시저장해둔다. 임시저장 후 브랜치를 변경할 수도 있고, 버그를 수정하는데 여러가지 방법을 시도해보고 싶을 때 각각의 방법을 stash로 저장해 둘 수도 있다. 이 때, 새로운 파일이 생성되었을 경우 add 하지 않았다면 stage 되지 않았기 때문에 stash에 저장되지 않는다.
    • git stash -m “{메시지}” : 해당 메시지로 stash 한다.
    • git stash -u : 새로운 파일이 있을 경우, 새로운 파일까지 모두 stash에 포함시킨다.
    • git stash list : stash된 내역을 확인할 수 있다.
    • git stash show {stash ID} : 해당 stash의 변경사항을 확인할 수 있다.
    • git stash show {stash ID} -p : stash의 변경사항을 조금 더 자세히 확인할 수 있다.
    • git stash apply {stash ID} : 해당 stash의 변경사항들을 다시 불러온다.
    • git stash apply : 가장 최신의 stash 변경사항들을 불러온다.
    • git stash pop : 가장 최신의 stash 변경사항을 불러오면서, stash 목록에서는 제거한다.
    • git stash drop {stash ID} : 해당 stash의 변경사항을 버린다.
    • git stash clear : 모든 stash 리스트를 삭제한다.
    • git stash branch {브랜치명} : 새로운 브랜치를 생성하면서 stash 변경사항을 적용시킨다.

  • restore
    • git restore . : 해당 폴더 내 모든 파일들의 변경사항을 초기화시킨다. (단, 추가된 파일은 지워지지 않기 때문에 git clean -fd (force directory) 명령어로 삭제해야한다.)
    • git restore {파일명} : 해당 파일의 변경사항을 초기화시킨다.
    • git restore —staged : 모든 stage를 취소한다.
    • git restore —staged {파일명} : 해당 파일의 stage를 취소한다.

  • --amend
    • 최근 commit 내용을 수정할 수 있도록 해준다.
    • git commit —amend -m “메시지” : 최근 커밋의 메시지를 변경한다.
    • git commit —amend : 수정내용에 변경이 있을 때, 해당 커밋에 덮어쓰기 한다. (push 전에만 가능)

  • reset
    • git reset {커밋해시코드} : 해당 커밋으로 초기화하고 working directory로 가져온다.
      (단, 추가된 파일은 working directory에 남아있다. 기본으로 --mixed 옵션이 생략되어있다.)
    • git reset HEAD~2 : 위 명령어와 동일하다. HEAD로부터 2개 앞의 commit으로 초기화한다.
    • git reset --soft HEAD~2 : 해당 커밋으로 초기화하고 staging area에 보관한다.
    • git reset -hard HEAD~2 : 로컬(working directory)에도 저장하지 않고 staging area로도 가져오지 않은 채로 초기화한다.

  • reflog
    • git reflog : HEAD가 가리키고있었던 로그를 모두 보여준다. 따라서, reset 등을 이용해서 날려버린 내용들을 복구하는데 사용할 수 있다.

  • revert
    • git revert {커밋해시코드} : 해당 commit의 변경을 취소하면서, 새로운 commit 기록을 남긴다.
    • git revert --no-commit {커밋해시코드} : 새로운 commit을 남기지 않으면서 변경을 취소시킨다.

  • blame
    • git blame {파일명} : 해당 파일을 누가 언제 어떤 부분을 수정했는지 확인할 수 있음
profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...
post-custom-banner

0개의 댓글