git 명령어

국물빌런·2020년 2월 1일
0

저장소 만들기

  • 원격 저장소로부터 저장소 복제

Git clone <url> [디렉토리 이름]
디렉토리 이름을 생략하면 저장소 디렉토리 이름으로 복제한다.

  • 로컬에서 git 저장소 생성

git init

파일 관리

  • 변경사항 체크

git status
-s : short의 줄임말이다. 로그를 좀 더 간단히 보여준다
아래와 같이 보여진다.
image.png
-s 옵션을 줬을때 변경된 내용에 대해 위와 같이 표현된다.
각 라인은 2가지 정보를 담고 있다. 하나는 변경 상태, 하나는 파일명이다.
변경상태는 크게는 3가지로 나눈다.
붉은색M 관리 대상인 파일이 변경된 상태
?? 관리 대상이 아닌 파일
A 새로 만들어져 staging된 파일
녹색M 관리 대상 파일이 변경된 후 staging된 상태
MM 관리 대상 파일이 변경된 후 staging된 후에 다시 변경된 상태(다시 staging이 필요함)
즉 위의 스크린샷은 master.txt는 파일이 수정된 후 git add명령어를 사용한 후 다시 수정한 경우이다. 다시 git add명령어를 수행해야 정상적으로 반영이 된다.
master2.txt는 새로 생성된 파일로 add를 하기 전이라면 ??으로 표현되고 add를 했다면 녹색A 로 표현된다. 위 스크린샷에서는 add를 한 후이다.
work.txt는 tracked파일이지만 변경후 아직 add명령어로 staging하지 않은 상태이다.

  • 변경 내용 상세보기
    git diff <file name>
  • 변경 내용 상세보기(tool사용)
    git difftool <file name>

*git diff는 주의해야 할 점이 하나있다.서브버전에는 staging영역이 없다.
따라서 diff는 단순히 저장소와 비교하면 된다.
근데 git에는 stage영역이 있다. 그럼 diff는 워킹 디렉토리와 저장소를 비교하는 것일까, stage와 저장소를 비교하는 것일까.
기본적으로 워킹 디렉토리와 저장소를 비교한다.
stage 내용과 저장소를 비교할때는 --staged옵션을 넣는다.
git diff <file name> --staged

  • 파일 무시하기
    관리 대상에서 완전히 제외하고 싶은 파일(.o등)은 .gitignore에 패턴을 등록한다.
  • 커밋전 특정 파일 스테이징

git add <filename>

  • 변경된 모든 파일 스테이징

git add *
스테이징에 등록된 대상은 다음 커밋의 대상이 된다.
하지만 만약 스테이징에 등록한 후에 내용을 수정했다면 어떻게 될까?
커밋 명령어 실행시 add명령어를 실행한 순간의 파일로 반영이 된다.
즉 add명령이 파일이름으로 스테이징에 등록하는것이 아니라 add명령이 수행되는 순간의 스냅샷으로 스테이징에 등록한다.
*따라서 스테이징에 등록된 파일을 수정한 후에 꼭 다시 add해주어야 한다.

  • 스테이징 내용 커밋

git commit

*-a옵션 : stage 과정을 생략

*-m옵션: 커밋 메시지를 콘솔명령에서 작성
git commit -a -m '변경된 사항 바로 커밋'

  • stage에서 파일삭제
    git rm <file name>
    위 명령어는 stage에서 관리 대상 파일을 삭제한다는 의미이다.
    주의할점은 워킹디렉토리의 파일도 같이 삭제된다.
    워킹디렉토리에서는 삭제하지 않으려면 --cached옵션을 준다
    워킹 디렉토리에서 삭제한후 add해도 같은 결과다.
    두가지 다 저장소에 반영하려면 커밋을 해줘야한다.

  • unstaged상태로 전환하기
    git reset HEAD <file name>
    *git rm과 비슷하지만 파일을 지우는것이 아니라 unstaged상태로만 변경하는것이다.

원격 저장소와 동기화

원격 저장소에서 받아놓은 소스 갱신

git pull

원격저장소로 백업

git push

profile
국물을 달라

0개의 댓글