Jun 개발노트

Git 명령어(기초)

2020-08-17

기본적인 Git 명령어와 무슨 동작을 하는지?

  1. git init

    • 아직 버전관리를 하지 않는 로컬 디렉토리에 git 저장소를 적용하는 방법
    • 디렉토리를 Git 저장소로 만든다.
    • 디렉토리에 .git 폴더가 생기면서 버전관리를 시작한다.
  2. git clone <저장소 url> [클론 할 폴더명]

    • 프로젝트의 히스토리를 전부 받아온다.
    • 실제로 서버의 디스크가 망가져도 클라이언트 저장소 중에서 아무거나 하나 가져다가 복구하면 된다(만능)
    • 해당 url로 디렉토리를 만들고 그 안에 .git 폴더를 만든다. 저장소의 데이터를 모두 가져와 최신버전으로 checkout 한다.
  3. git status

    • Git 로컬 저장소의 파일 상태 확인
    • 파일상태에 따라 Tracked, unTracked로 나뉜다.
      • Tracked
      1. unmodified : 수정되지 않음(과거랑 현재가 같다)
      2. modified : 수정되었지만, 로컬에 staging이 안됨
      3. staged : commit을 통해 로컬 저장소에 기록됨
      • unTracked : git에서 추적하지 않는 파일
  4. git add <파일명> or .

    • git에서 변경상태를 추적한다(변경여부를 지속적으로 확인하는 추적리스트에 올린다)
    • 파일 상태가 변경이 되면 status의 상태를 modified로 바꿔 알려준다.
  5. git diff

    • diff를 통해 add 하기전에 파일의 수정사항을 확인
    • --staged 옵션을 걸어주면 add한 이후의 수정사항도 확인 가능
  6. git commit

    • 수정된 파일을 staged 상태로 변경하여 로컬저장소에 등록해준다.
    • -m 옵션으로 인라인으로 메세지를 작성할 수 있다.
    • 수정된 파일을 -a옵션으로 commit 하면 git이 자동으로 git add를 실행하고 commit 단계로 진입
  7. git rm <파일명> or <폴더명>

    • git 로컬 저장소에서 삭제한다. 동시에 로컬 디렉토리에서도 사라진다.
    • 지워진 파일/폴더는 staged 상태가 된다.
  8. git log

    • 저장소의 커밋 히스토리를 시간순으로 보여준다(최신이 맨위)
    • -p 옵션으로 파일이 어떻게 변경되었는지도 확인 가능
    • --stat 옵션으로 파일이 얼마나 바겼는지 통계 확인 가능
  9. git remote add <원격 저장소 별칭>

    • 해당 로컬에서 원격 저장소(github, gitlab...)을 remote로 등록
  10. git fetch

    • remote로 연결된 저장소에서 모든 파일과 데이터를 가져오지만!!! no merge
  11. git pull

    • git fetch와 동일하게 작동하지만, 현재 로컬과 merge가 된다(중요)
  12. git push <원격 저장소 별칭> <로컬 브런치>

    • 등록한 원격 저장소로 나의 브런치를 선택하여 파일을 보낸다
  13. git branch <새롭게 만들 브랜치 명>

    • 브랜치가 생성된다(또 하나의 디렉토리가 생성된다. 안에 있는 파일은 동일)
    • 단, 생성 전 현재 작업하고 있는 브랜치의 파일 상태를 staged 상태로 변경하여야 한다.
    • -v 옵션으로 현재 브랜치의 목록을 확인할 수 있다.
  14. git checkout <옮길 브랜치명>

    • 브랜치를 변경한다.
    • -b 옵션으로 생성과 함께 checkout을 할 수 있다.
  15. git merge <merge할 브랜치>

    • merge 할 브랜치를 선택하여 파일을 합친다.
  16. git mergetool

    • merge시 conflicts(충돌 == 파일을 자동으로 합칠 수 없다)나면 직접 합치는 도구
    • 화면 구성은 <대상 파일> <충돌 된 파일> <머지 할 파일> , 충돌 된 파일을 수정하면 된다.
  17. git reset

    • hard 옵션
      • 리셋하기 전까지 했던 staging area, working directory 작업까지 reset
      • "환생 수준"
    • soft 옵션
      • 리셋하기 전까지 했던 staging area, working directory 작업까지는 남겨둠
      • 리셋한 버전과 현재까지의 작업을 합쳐 새로운 버전을 만들때
    • mixed 옵션(default)
      • staging area : reset , working directory : 남겨둠
      • 현재 작업물은 지우지 않고, 이전버전으로 돌아가서 add할지 말지 결정할때 사용
  18. git revert

    • git을 특정 버전을 다시 돌린다.
    • git reset은 돌아가면 그 전의 상태를 다 없애지만, revert는 history를 그래로 남긴다.
  19. git reflog

    • 저장된 HEAD 변경 이력을 보는 명령어
    • reset --hard 복구시 사용