사랑해 마니마니

GIT Tutorial 02 : 뭔가 고쳤으면 저장해 보자. 당근 로컬 레포지토리에... 본문

git in action

GIT Tutorial 02 : 뭔가 고쳤으면 저장해 보자. 당근 로컬 레포지토리에...

분리불안증후군 2018. 5. 19. 16:45

뭔가 고쳤으면 저장해 보자

git add / git commit / git diff / git stash / .gitignore

Git add

git은 3가지 영역이 있다

  • Working directory : 디렉토리 또는 상위 디렉토리에 git init 을 한 적이 있다면 그냥 디렉토리가 아니라 git이 째려 보고 있는(변화를 감지하는) 디렉토리
  • Staging Area : git의 대기 공간. 천국은 못가고 대기하고 있는 연옥(?) 같은... 공간으로 git add를 하면 스냅샷이 생성되어 이곳에 저장된다
  • .git Directory (repository) : 버전으로 저장되는 공간으로 git commit을 해야 들어갈 수 있다.
$ git add <file>
$ git add <directory>

또 하나 잘 안쓰는 것 중 하나지만

$ git add -p

대화형으로 이전에 staging  area에  add해 놓은 파일과 추가로 add한 파일간의 diff를 보여주고 add를 진행할 것인지 물어 본다.

$ touch min.first
$ git add min.first
$ vi min.first //min.fist modifed
$ git add -p
diff --git a/min.first b/min.first
index e69de29..2a5d015 100644
--- a/min.first
+++ b/min.first
@@ -0,0 +1 @@
+1st
Stage this hunk [y,n,q,a,d,/,e,?]?

y,n,q,a,d,/,e,?가 뭐냐면 

y to stage the chunk, n to ignore the chunk, s to split it into smaller chunks, e to manually edit the chunk, and q to exit.

$ touch min.second
$ git add min.second
$ git commit

이렇게 하면 min.second가 만들어 지고, staging area에 현재 min.second의 snap shot이 저장되고, 마지막으로 repository의 commit history에 staging area에 저장된 녀석들이(실제로는 snap shot)이 저장된다.  

Git commit

subversion의 commit과 git commit과 차이점

svn의 commit은 중앙 저장소에 변경사항을 밀어 넣는 데 비해, git은 분산 레포지토리로 로컬 레포지토리에 snapshot 이 저장될 뿐이다. git은 중앙 저장소에 무언가를 변경 시킬려면 git push를 추가로 해 줘야 한다.  

$ git commit

이렇게 하면 갑자기 vim이나 git config --global core.editor로 세팅한 에디터가 떠서 commit을 할려고 하는 데 "니가 아직 commit comment를 작성 안했으니깐 빨리 작성해라"라고 하면서  comment 작성을 완료하기를 기다리고 있습니다. (입력하기 싫으면 ㅋㅋ나 . 을 입력하고 :wq로 끝내자 ^^;)

git commit에도 여러 옵션이 있는 데

  • git commit -a : 이렇게 하면 working directory에서 변경된 놈들을(단 한번도 git add를 했던 파일들을 대상으로) commit 시켜 버립니다. 
  • git commit -m : 에디터 띄우지마. 코멘트 바로 쓸 테니. 이런 의미의 옵션 바로 뒤에 코멘트가 나와야 함. git commit -m "i am a comment^^;
$ touch min.secound
$ git add . // add current directory 
$ touch min.third
$ git commit -a // min.second만 commit됨​
  • git commit -am "_i am not a comment" : 위의 두개를 한방에
  • git commit --amend : 이미 commit을 했는 데.. 생각해 보니.. 코멘트가 (예술적이지 못하서) 고칠 경우

amend: [타동사][VN] (법 등을) 개정[수정]하다

'git in action' 카테고리의 다른 글

git clone  (0) 2019.02.15
git commit  (0) 2019.02.15
git log : 커밋 히스토리 조회하기  (0) 2019.02.15
git rm  (0) 2019.02.15
GIT Tutorial 01: git을 사용하려면 맨 처음에 해야 할 일들  (0) 2018.05.19
Comments