상세 컨텐츠

본문 제목

[Git] Git 기본 명령어 요약정리

IT/프로그래밍

by James Lee. 2015. 12. 6. 20:00

본문

​아래의 사이트에서 공부하면서 나온 명령어들을 정리했다.

명령어에 대하여 보다 자세한 내용이 알고 싶다면 아래 사이트를 참조하길 바란다.

http://git-scm.com/book/ko/v1/



git init

Git 디렉토리를 만든다 (주로 관리하고 싶은 프로젝트의 디렉토리에 사용)

예시 : git init


git clone [url] [저장이름]

다른 Git 저장소에 있는 모든 내용을 복사해온다.

예시 : git clone git://github.com/schacon/grit.git


git status

파일의 상태 확인하기

현재 위치한 파일에서 어느것이 어떤 상황인지 Tracked인지, Untracked인지, Modified인지 등을 알려준다.

또한 작업 중인 브랜치를 알려준다.

예시 : $ git status
On branch master
nothing to commit, working directory clean


git add [파일명]

파일을 새로 추적한다.

예시 : git add README

git add . 으로도 많이 쓰는것 같다 (. 이하 파일은 모두 추적)


git diff

파일이 어떻게 변경되었는지 확인할때 쓴다.

Staged or NoneStaged가 궁금할때는 git status를 쓰지만

Patch처럼 어떤 라인을 추가했고, 삭제했는지 궁금할 때는 git diff를 사용한다.


status/diff 차이

 git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   README

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

 git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks.rb
+++ b/benchmarks.rb
@@ -36,6 +36,10 @@ def main
           @commit.parents[0].parents[0].parents[0]
         end

+        run_code(x, 'commits 1') do
+          git.commits.size
+        end
+
         run_code(x, 'commits 2') do
           log = git.commits('master', 15)
           log.size

 

git commit [-a] [-m] [커밋 메세지 명]

수정한 파일을 커밋한다 (Staged 상태만 커밋됨)

커밋하기 전에 status로 파일들의 상태를 확인하자 

-a를 하면 Tracked 상태의 파일을 자동으로 커밋완료 (Staging Area에 넣음) 한다.

따라서 git add를 따로 실행하는 번거로움을 덜 수 있다.


$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

no changes added to commit (use "git add" and/or "git commit -a")
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks
1 files changed, 5 insertions(+)


git rm [삭제할 파일명]

파일을 삭제하는 명령어

그냥 rm과 뭐가 다른가? 그냥 삭제하면 Unstaged (계속 추적함)

git rm으로 삭제하면 staged (더이상 추적하지 않음)

$ git rm grit.gemspec
rm 'grit.gemspec'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    grit.gemspec


git mv [원본 파일명] [변경할 이름]

​이름을 바꿔준다. 파일 이름이 변경되어도 Git은 알아서 추적해준다.

$ git mv README.txt README
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        renamed:    README.txt -> README


​git log

히스토리를 조회하는 명령

저장소의 커밋 히스토리를 시간순으로 보여준다.

이때 가장 최근의 커밋이 가장 위에 위치한다.

보통 log에 자기가 보기 편하게 옵션을 붙인 뒤 alias를 써서 요약한다 (나같은 경우는 git lol로 편하게 본다)

$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test code

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit

이후로 계속 추가하도록 하겠다.​ 



관련글 더보기

댓글 영역