이전 글을 통해 우리는 git clone, git pull을 이용해 원격 저장소에 있는 프로젝트를 로컬 저장소인 내 컴퓨터로 옮겨보았습니다.

 

그러면 내가 로컬 저장소에서 작업한 내용은 원격저장소까지 어떤 방식으로 업로드할 수 있을까요?

 

제목에서 알 수 있듯, git add, git commit, git push를 통해 우린 로컬저장소 → 원격저장소로 작업 내용을 업로드할 수 있습니다.

 

  • Working Directory : 작업 공간. 파일의 생성/수정/삭제가 이루어지는 공간.
  • Staging Area : 버전이 될 후보들이 올라오는 공간. commit을 하기 전 임시 저장되는 세이브 포인트.
  • Local Repository : 로컬 저장소. 
  • Remote Repository : 원격 저장소.

 

위의 일련의 과정을 과일추수에 빗대어 설명하자면, 다음과 같습니다.

 

git add : 다 익은 과일만(저장하고자 하는 파일)을 선별해 상자(임시저장소)에 담음.

git commit : 상자에 담긴 과일들을 창고(로컬 저장소)에 쌓음.

git push : 창고에 있는 과일상자들을 모두가 살 수 있는 마트(github-원격저장소)로 이동시킴.

 

(git pull은 과일 반품..?)

 

git status


 사실 git add, commit, push를 진행하기 전에 수행해야될 일들이 있습니다.

$ git status

: git status는 현재 git의 파일 관리상태를 알려줍니다.

 

▽ 현재 상태를 파악하게 해주는 3 문단.

 

  • 1문단 : 현재 당신의 branch는 origin/master입니다.
  • 2문단 : Staging Aread에 commit되지 않은 다음 파일(README.md)이 있습니다. 
  • 3문단 : Untracked files나 변경사항에 대해 알려줍니다. 또 이 파일들을 추가하기 위해 git add나 git commit -a를 이용하라고 설명합니다.

위 내용을 토대로 현재 나의 branch가 어떠한지, 어떤 파일이 commit되지 않았는지, 관리대상에 포함되지 않은 파일들은 없는지 확인이 가능합니다.

 

 

git add


 git add내가 추가하고자 하는 파일을 선택하는 과정으로 볼 수 있습니다.

 아직 관리 대상은 아니지만, 앞으로 관리할 대상을 선별하는 것이죠.

 

 

$ git add 파일경로

: 해당 경로에 있는 파일을 add합니다.

 

▽README.md를 수정한 뒤 status를 확인해보면, README.md가 Staged된 것을 볼 수 있습니다.

 

만약 잘못 add 했다면, 다음과 같은 명령어를 실행하면 됩니다.

$ git restore --staged 파일경로

: 해당 경로에 있는 파일의 staged 상태를 unstaged 상태로 변경합니다.

 

$ git add .

: 현재 디렉토리에 있는 모든 파일을 add합니다.

 

$ git add -A

: 프로젝트 내 모든 파일을 add합니다. (현재+상위 디렉토리)

 

 

 

git commit


 git add를 통해 선별된 파일들을 git commit을 이용하여 소스 관리 대상에 올립니다.(로컬 저장소에 저장됨)

commit에는 커밋 메세지가 들어갑니다. 이 메세지를 통해 팀원들이 해당 파일들이 어떤 기능 혹은 어떤 수정 등이 이루어졌는지 알 수 있습니다. 따라서 커밋 메세지는 현재 버전에 대한 내용을 명확하게 전달해야하기에 어느정도 정해진 형식을 지켜야 합니다.

 

$ git commit -m "커밋메세지"

: -m은 commit의 대표적인 옵션입니다. commit message가 중요한만큼 에디터를 통해 작성하는 경우가 있기 때문입니다.

  • -m : vim(에디터)에서 별도의 메세지를 작성할 필요없이 인라인 형식으로 바로 커밋 메세지 작성합니다.
  • -a : 수정된 파일에 대한 add와 commit을 한꺼번에 수행합니다. (한 번도 add되지 않은 파일은 add 후 -a 옵션적용이 가능합니다.)
  • -am : -m과 -a의 옵션을 합친 것입니다.

그러나 통상적으로 인라인(In-line)형식으로 작성하기 때문에 자세히 알 필요는 없습니다.

 

 

 

git push


git push를 통해 우리는 드디어 로컬 저장소에 저장된 파일을 원격 저장소(github, google drive 등)에 업로드할 수 있습니다. 

 

$ git push [remote] [branch]

: git push를 하는 경우 뒤에 현재 remote, branch 값을 적어주는데, 위 예제와 같이 origin/master라면 다음과 같이 명령하면 됩니다.

$ git push origin master

 

▽ README.md에 'this is hwonda' 문구를 넣고 add / commit / push 를 진행합니다.

 

▽ add / commit / push 하기 전.

 

▽ push 이후에 원격 저장소에 변경 사항이 적용됩니다.

+ Recent posts