KEEP GOING

[Git] Git 기본 명령어 모음(int, add, commit, push, status, rm, diff) 본문

git

[Git] Git 기본 명령어 모음(int, add, commit, push, status, rm, diff)

jmHan 2022. 10. 5. 17:28
반응형

git 작업 환경 

Working Directory: 현재 작업 중인 폴더

Staging Area: 버전 관리할 파일들을 기록하는 장소(깃이 감시하는 대상들)

Local Repository: pc에 파일이 저장되는 저장소(내려받는 곳)

Remote Repositoty: 원격 서버에서 파일이 관리되며 여러 사용자와 공유할 수 있는 저장소(깃에 올리는 곳) 

 

git init

일반 폴더를 깃 저장소로 초기화하는 명령어

해당 명령어 실행 후, 추가적인 깃 명령어 사용 가능

.git이란 폴더가 생기는데 파일 history가 저장되므로 삭제해서는 안 됨

# 현재 디렉터리를 git을 통해 버전 관리한다고 지정
$ git init

# 깃 닉네임 등록
$ git config --global user.name "깃 닉네임"
# 깃 이메일 등록 
$ git config --global user.email "깃 이메일"
# 닉네임과 이메일이 잘 등록되었는지 확인
$ git config --list

 

 

git add

원격 저장소에 파일을 올리기 전에 깃이 파일을 지켜보도록 함

깃 저장소 snapshot에 파일이 포함됨

# 스테이징: 깃에 반영할 내용들을 추가함
$ git add 파일명

# --all . #: 모든 변경사항을 반영 
$ git add --all
$ git add .
$ git add *

 

 

git status

git의 워킹 트리를 확인하는 명령어

워킹 트리가 아닌 폴더에서 실행시 에러 발생 

# 깃 저장소 상태를 점검
$ git status 

# 깃 저장소 상태를 요약하여 점검 
$ git status -s

 

 

git rm 

로컬 저장소와 원격 저장소의 파일을 삭제하는 명령어

--cashed 옵션 사용시 원격 저장소에서만 해당 파일 삭제 가능. 만약 원격 저장소에 없는 파일이라면 단순히 untracked 상태로 변환해줌 

# 로컬, 원격 저장소 둘다 파일 삭제
$ git rm 파일명

# commit시 로컬만 남기고 원격 저장소에서 해당 파일 삭제 
$ git rm --cashed 파일명

 

 

git commit

로컬 저장소의 내용을 원격 저장소에 반영

커밋된 소스코드들은 깃이 추적하고 버전관리를 도와줌 

$ git commit 

$ git commit -m "메시지"

012f2ec라는 문자열은 각 커밋마다 생성되는 고유 이름으로 git revision 혹은 commit hash라고 불린다.

 

 

git commit -am

git add와 commit을 동시에 하는 방법 

 

-a: add 명령어 없이 add 기능을 도와주는 옵션

-m: vi에서 별도의 메시지 작성없이 인라인 형식으로 커밋 메시지를 작성할 수 있는 옵션

-am: a와 m 옵션을 동시에 사용

        다만, 기존에 add로 staging area에 한번 올려서 tracked된 파일에만 사용할 수 있다.

$ git commit -am "메시지"

a.txt, b.txt, c.txt 모두 한 번이라도 add된 적 없는 신규 파일이기 때문에 -am 옵션이 적용되지 않음

따라서 아래와 같이 추가적으로 add를 수행해야  -am을 통한 커밋이 가능하다.

 

 

git log

커밋한 내용을 보여주는 명령어 

이 명령어를 통해 이전 단계로 되돌리는 등의 버전 관리를 할 수 있음  

$ git log

# 요약된 로그 확인
$ git shortlog

# 커밋 로그를 보기 좋게 출력
$ git log --pretty

# 커밋 그래프를 출력
$ git log --graph

commit 옆에 장문의 문자열이 있는데 이 문자열의 축약어가 commit hash이다.

 

 

git diff

최근 커밋된 버전과 작업 폴더에 있는 파일 사이의 차이를 출력하는 방법

수정한 파일을 커밋하기 전에 최종적으로 검토하는 역할 

# commit된 파일과 현재 수정 중인 파일 상태 비교 
$ git diff

# commit된 파일과 add된 파일 상태 비교
$ git diff --staged

# commit 간의 상태 비교: commit hash 사용
$ git diff 해시값1 해시값2

# commit 간의 상태 비교: 가장 최근 커밋과 그 전의 커밋 비교
$ git diff HEAD HEAD^

# branch 간 상태 비교
$ git diff 브랜치1 브랜치2

HEAD: 현재 사용 중인 브랜치의 마지막 커밋을 나타내는 명칭. 기본적으로는 master 브랜치의 선두 부분을 나타낸다. ~(틸드) 혹은 ^(캐럿)을 숫자와 붙여 특정 커밋의 위치를 가리킬 수 있다. 브랜치 병합에서 원본이 여러 개 있는 경우, ^(캐럿)을 이용하여 몇 번째 원본인지 지정할 수 있다.

 

 

git push

변경된 이력을 원격 저장소에 올리는 작업

-u: 현재 브랜치를 자동으로 원격저장소의 master 브랜치로 연결하도록 도와주는 옵션 

$ git push 

$ git push -u 원격저장소 현재 브랜치명

원격 저장소는 orgin, 현재 브랜치명은 master이다.

-u 옵션을 통해 현재 로컬 저장소의 master 브랜치와 origin이라는 원격저장소의 master 브랜치를 연결해 주었다. 이 작업을 선행한다면 이후로 git pull 혹은 git push만 사용하여 연결할 수 있다.

반응형
Comments