Git의 기본적인 명령어

안녕하세요 미슈카 입니다.
오늘은 git의 기본적인 명령어들을 정리해보려고 합니다.
모든 명령어들을 정리하는 것이 아닌 많이 쓰이는 명령어들을 위주로 정리 하려고 합니다.

그전에 먼저 간단하게 git이란 무엇인가? 그리고 git에서 사용하는 용어들을 정리해 보겠습니다.

git이란 무엇인가?


git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.위키백과
위키 백과에서는 위와 같이 말하고 있다. 그 중에서 우리가 주위깊게 보아야 할 단어들은
“추적, 분산 버전 관리 시스템”이다.
git은 2005년 리누스 토르발스가 리눅스 커널 개발을 위해 처음 개발하였다.
많은 버전 관리 시스템(VCS : Version Control System)중에 하나인데 다른 버전 관리 시스템과 다른점은
저장소를 분산해서 관리 한다는 점이다. 즉 중앙 저장소에 문제가 생겨도 로컬저장소를 이용하여 복원이 가능하다는 것이다.

git에서 사용하는 용어


  • Working tree : 현재 작업하고 있는 공간, git이 관리하고 있지만 아직 추적(track)하고 있지 않은 상태 (또는 Working Directory)
  • Staging area : 커밋 하기전 staged 된 파일들이 있는 공간,수정한 파일을 커밋하기 전에 표시(add)해둔 공간
  • Commit : 작업한 내용을 로컬 저장소에 저장하는 것을 의미합니다.
  • Repository : 저장소를 의미 합니다. 저장소에는 2가지가 있습니다.

-Local Repository : 본인 PC에 존재하는 저장소를 의미합니다.
-Remote Repository : Github, Gitlab과 같은 원격저장소를 의미합니다.

  • Push : 로컬저장소(Local Repository) 에서 Commit이 완료된 내용을 원격저장소에 업로드 하는 것.
  • Clone : 원격저장소의 내용을 통째로 다운로드 하는 것을 말합니다.
  • Branch : 가지 또는 분기점을 의미, 현재 상태를 복사하여 자신만의 branch를 만들수 있고 작업이 완료되면 merge를 통해 합칠 수 있다.
  • Checkout : 특정 시점이나 브런치로 이동하는 것을 의미
  • Fetch : master나 다른 branch에서 작업한 내용이 내 로컬저장소와 버전이 맞지 않을때 최신버전으로 업데이트
  • Merge : 다른 branch의 내용을 현재 branch로 가져와 합치는 작업
  • Pull : 원격저장소의 변경된 내용이 로컬저장소에 반영됩니다.(fetch + merge)

git에서 일어나는 상태변화

git 트랜잭션
위 그림은 git을 사용하면서 일어나는 트랜젝션을 정리해 본 그림이다.



git 명령어


본격적으로 git 명령어 들에 대해 알아보자
모든 명령어를 나열하는 것은 아니고 주로 사용하는 명령어를 기준으로 써보고자 한다.

환경설정

git config

bash
1
2
3
git config --global --list   // 현재 설정 정보를 조회합니다.
git config --global user.name "사용자명" // 사용자명을 등록합니다.
git config --global user.email "이메일주소" // 사용자 이메일주소을 등록합니다.

기본명령어

git init

bash
1
git init    // 깃 저장소를 초기화 한다.

현재 디텍토리에서 git 저장소를 생성합니다.

git status

bash
1
git status  // 저장소 상태 보기

저장소의 상태를 체크 합니다. Commit이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브런치를 작업하고 있는지 등을 볼 수 있다.

git diff

bash
1
2
3
4
5
6
git diff    // 스테이징 영역과 현재 작업트리의 차이점을 보여준다.

옵션
HEAD // 저장소, 스테이징 영역, 작업트리의 차이점을 모두 볼수 있다.
--cached // 스테이징 영역과 저장소의 차이점을 볼 수 있다.
--stat // 변경사항에 대한 통계를 볼 수 있다.

git add

bash
1
2
3
4
5
6
7
8
9
git add <파일이름>    // 파일단위로 선택

git add . // 모든 파일 추가
또는
git add *

옵션
-i // 대화형모드 실행, 일부분만 선택하여 스테이징 가능
-p // 대화형 모드 없이 바로 패치모드 사용

단일 파일 또는 변경된 모든 파일을 스테이징 한다.

git commit

bash
1
2
3
git commit
git commit -m "커밋메세지"
git commit -a // 스테이지에 올리는 것과 커밋을 동시에 진행

git revert

bash
1
git revert <커밋아이디>

기존 커밋에서 변경한 내용을 취소해서 새로운 커밋을 만듭니다.

git reset

bash
1
2
3
git reset --<커밋아이디>    // 커밋 취소
git reset --hard <커밋아이디> // 해당 위치로 되돌림
git reset --hard HEAD // 마지막 커밋 상태로 되돌림

git log

bash
1
2
3
4
5
6
git log

옵션
-3 // 출력할 커밋로그의 갯수를 지정 할 수 있습니다.
--oneline // 한 줄로 간단하게 보여줍니다.
--graph // 브런치 트리를 볼 수 있습니다.

커밋로그들을 볼 수 있습니다. 여러가지 옵션들을 적절히 사용하면 자신이 원하는 로그만을 볼 수 있습니다.

Branch 명령어

branch 목록

bash
1
2
3
4
git branch    // 로컬 브런치
git branch -v // 해당 브런치의 commit ID도 볼 수 있다.
git branch -r // 리모트 브런치
git branch -a // 로컬, 리모트 포함된 모든 브런치

브런치목록을 보여줍니다. 옵션을 통해 원하는 저장소의 브런치를 볼 수 있습니다.

branch 생성

bash
1
git branch <브런치이름>    // 원하는 이름으로 브런치를 생성한다.

branch 삭제

bash
1
git branch -d <브런치이름>

git checkout

bash
1
git checkout <브런치이름>    // 활성 브런치 변경

git merge

bash
1
git merge <브런치이름>    // 브런치이름의 내용을 현재 브런치로 합친다.

원격저장소

git clone

bash
1
git clone <저장소주소> <폴더명>    //원격저장소를 복제하여 저장소를 생성합니다.(폴더명은 생략가능)

git remote

bash
1
2
3
git remote add <저장소이름> <저장소주소>    // 원격저장소 연결
git remote -v // 연결된 원격 저장소를 보여줍니다.
git remote rm <저장소이름> // 원격저장소를 제거합니다.

git fetch

bash
1
git fetch

원격저장소의 변경사항을 가져와서 갱신합니다.

git pull

bash
1
2
git pull 
git pull -rebase <저장소이름> <브런치이름> // 커밋메세지를 남기지 않는다.

git push

bash
1
2
3
git push    // 원격저장소에 업로드 한다.
git push <저장소이름> <브런치이름>
git push origin master

파라미터 값을 주지 않으면 origin 저장소에 푸싱하며 현재 지역브런치와 같은 이름으로 브런치에 푸싱합니다.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×