본문 바로가기
기타/멋쟁이사자처럼

[git] git 기본개념 및 흐름

by jinbro 2017. 1. 15.


git이란?

asd

  - 버전관리를 위한 프로그램이라고 생각하면 됨

  - 하나의 콘텐츠를 개발 함에 있어서 각각 맡은 기능이 있을 것, 따로따로 개발하고 하나로 뭉칠 수 있어서 좋음

   



본격적인 git 설치에 앞서........... git을 통한 작업 흐름을 살펴봄






흐름은 위의 그림과 같다.

 최종 작업물이 될 저장소를 github에 두고 github에 있는 자료를 clone(git clone 원격저장소url)을 통해 내 컴퓨터로 가져왔다

내 컴퓨터로 가져온 디렉토리는 곧 로컬저장소이다.

로컬저장소의 파일을 가지고 수정한다고해서 곧바로 github에 있는 파이 수정되지 않는다.

로컬저장소에서도 누가 무슨 작업을 할지 혹은 무슨 기능의 작업을 할지에 대해 나눌 때 사용되는 개념이 git branch인데, 이것은 git의 기본에 대해서 살펴본 후 다음 포스팅에서 자세하게 알아볼 것이다.




로컬저장소에서 작업을 한 뒤 github에 올리기위해 필요한 작업흐름은 다음과 같다.


1) 파일들이 위치한 곳을 Working Tree라 함. 파일을 수정함

2) 수정한 파일의 버젼기록을 위해 Staging Area에 수정된 파일 리스트를 add 시킴, Staging Area는 파일들의 버젼기록(commit)이 되기 전 대기 장소라고 보면 된다.

3) 최종 버젼을 기록하기 위해 git commit을 한다. 로컬저장소에는 git commit이 완료된 상태이다. 그러나 최종 콘텐츠 저장소인 원격저장소(github)에는 수정 사항이 반영되지 않은 상태다.

4) 원격저장소에 반영시키기 위해 git push로 커밋내역을 푸쉬해준다.




위의 작업들을 실제 작업에 적용시켜봄으로서 어떻게 동작하는지 살펴본다.





git clone을 통해 원격저장소 파일을 당겨온다(당겨온 경로는 로컬저장소가 된다)



로컬저장소에서 Gemfile(레일즈 앱을 구성할 때 필요한 플러그인의 개념인 gem 리스트가 담긴 파일)을 수정한다.



작업을 마쳤다면 git status를 커맨드라인에 입력해본다.

그러면 위와 같은 결과가 나옴(위의 결과를 보기위해 aws에 가상서버를 개설하였던 서버컴을 찾아 git을 깔고 레일즈 프로젝트를 생성한 후 gem install을 해주었다)


빨간 글씨의 의미는 파일이 수정되었지만 나의 로컬저장소에 있는 git에는 버전기록이 되지 않았기때문에 추가하라는 메세지와 같음

바로 위에서 봤던 working tree에서 staging area로 넘어가는 과정이 필요함

staging area는 버전기록이 되기 전 단계로 버전기록이 필요한 파일들이 그 전에 잠시 대기하는 장소와 같음

작업공간(working tree)에서 staging area로 옮기려면 git add 파일명.파일확장자 를 입력하면 됨

여기서 add는 staging area로 추가한다는 뜻으로 이해하면 되고, 파일이 여러개 일 경우 ,(콤마)를 찍고 계속해서 나열하면 됨(git add 파일1, 파일2, 파일3)


add를 시킨 후 다시 git status를 입력해본다.

아까와 다르게 초록색으로 글씨가 나오는데, add가 되었다는 뜻이다.



staging area에 추가를 시켰다면 실제 나의 저장소의 버전기록을 남겨야한다

이것을 바로 commit이라 함. staging area에 있는 파일들을 commit 하기 위해서 위와 같은 명령이 필요하다

커밋을 할 때 필요한 메세지(git commit -m "메세지")는 어느 부분이 어떻게 개발되었는지를 간단하게 설명할 수 있는 기능으로 커밋을 할 때에는 반드시 메세지를 지정하여야한다



이제 끝일까? 

나만의 저장소에만 버전기록(commit)과 파일 수정만 할 것이였으면 반쪽짜리 git을 사용하는 것이라 생각한다

버젼관리도 버젼관리지만 따로따로 기능을 개발해서 하나로 모을 수 있다는 장점이 있다고 처음에 언급을 하였다

이제 최종 컨텐츠가 될 원격저장소(github)에도 이 상황을 커밋(+소스전달)해줘야한다



이를 위해 위의 이미지에 쓰여져있는 명령어를 입력해야한다 (보는 그대로 git에 push를 해주는 것임 그 뒤의 명령어 origin은 원격저장소의 별칭임(따로 지정하지 않을 경우 origin으로 설정된다고 알고 있음)

그 뒤는 현재 브랜치명(master)를 뜻한다




아래에 나열한 URL들을 git에 대해서 공부를 하면서 참고한 사이트들이다

- git 명령어 정리 : http://yonoo88.tistory.com/204

- git 코드카데미 : https://www.codecademy.com/learn/learn-git

- 누구나 쉽게 이해할 수 있는 git 입문 : https://backlogtool.com/git-guide/kr/intro/intro1_1.html




앞으로 공부한 내용들을 올리면서 공부한 것을 꾸준히 복습도 하고 실제 개발에서도 적용해서 사용해보고 그래야겠다는 생각이든다

다음 포스팅에는 이번 포스팅에서 살펴본 것보다 조금 더 세세하게 살펴볼 예정이다








댓글