Git - Git & Github Basic


1. Git 이란 ?

  • Git은 버전(Version) 관리 시스템이자 형상 관리 도구 중 하나이다.
  • 여기서 버전(Version)이란? 유의미한 변화가 결과물로 나온 것을 의미한다.
  • Git이 SVN과 다른 점은 분산형 관리 시스템이라는 것이다.
  • SVN은 중앙 서버에 소스코드와 히스토리를 저장하는 방식이지만, Git은 소스코드를 여러 개발 PC와 저장소에 분산해서 저장할 수 있다. 그렇기 때문에 중앙 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
  • Git은 이러한 버전관리를 통해 협업하기, 되돌리기, 효율적으로 백업(Back up)하기 이렇게 3가지를 중점적으로 시행한다.
  • 사본을 로컬에서 관리하기 때문에 GIT이 SVN에 비해 훨씬 빠르다. ( SVN은 변경 로그 하나 보는 것도 인터넷을 경유해야 한다. )



2. 버전(Version)이 만들어지는 단계

Working Directory (작업 공간)

  • 내가 CODE를 수정하는 등의 작업을 하는 공간이다.
  • 파일을 생성, 수정, 삭제하는 공간이다.
  • 즉, 변경 사항이 생기는 공간이다.
  • Working Directory의 모든 변경사항을 버전으로 만들 필요는 없다. 여기서 선별한 파일들만 모아서 하나의 버전으로 만든다.
  • Working Directory에서 선별한 파일들만 Staging Area로 올려보낸다.


Staging Area

  • Working Directory에서 선별 된 파일들이며, 버전이 될 후보들이 올라와 대기하는 공간이다.
  • Staging Area에 있다고 해서 아직 하나의 버전이 되지는 않는다.


Local Repository

  • 버전별로 관리하고 저장하는 공간이다.
  • Local Repository에 Commit을 하는 순간 비로소 하나의 버전이 된다.



3. 버전(Version)을 만들기 위한 기본 명령어

  • $ git init : 현재 Directory에서 Git으로 버전관리를 시작한다. 선언
  • $ git status : 현재 Directory의 상황 확인
  • [ Working Directory —> Staging Area ] : $ git add 파일명
  • [ Working Directory —> Staging Area ( 이 때 변경사항이 있는 모든 파일 대상 ) ] : $ git add .
  • [ Staging Area —> Working Directory ] : $ git rm –cached 파일명
  • [ Staging Area —> Local Repository ] : $ git commit -m “커밋메시지” 파일명
  • [ Staging Area —> Local Repository ( Area 내의 모든 파일 대상 ) ] : $ git commit -m “커밋메시지”
  • $ git commit 만 입력시에는 좀 더 자세히 커밋메시지를 남길 수 있는 화면으로 이동한다.
  • $ git commit -am “커밋메시지” 를 통해 Working Directory —> Local Repository로 한 번에 이동시킬 수 있다. 단, 이건 한 번이라도 Commit을 한 파일 대상으로만 가능하다.
  • $ git log : Commit Log를 확인할 수 있다.
  • —> Commit ~ 라는 문자열이 나오는데, 그게 버전을 식별할 수 있는 CODE가 된다.
  • —> log에서 빠져나오려면 “Q”를 누르면 된다.
  • —> $ git log –all –decorate –graph –oneline 명령어를 통해 예쁘게 log를 볼 수 있다.
  • 하나의 깃 명령어에도 수많은 옵션들이 붙어있다. 그런 심화된 내용들을 보고 싶다면, Git Bash에서 $git 명령어 –help 를 치면 된다.



4. “A”라는 Directory에서 버전관리를 시작해보자

  • Git Bash 를 다운 받고 설치 한다. ( 기본 )
  • Git Bash에 내 계정을 연동한다. ( 기본 )
  • “A” Directory 에 들어가서, 우클릭 —> Git Bash를 실행한다.
  • $ git init 명령어를 통해 “A” 라는 폴더에서 버전관리를 시작할 것이라고 선언한다.
  • .git 이라는 숨김폴더가 생겼으면 성공한 것이다
  • .git 이라는 폴더가 생성된다.
  • $ git status 를 이용하여 현재 Directory의 상태를 알 수 있다.
  • Test.txt 파일을 하나 만든 이후, First 라고 입력 후에 저장을 한다.
  • $ git add Test.txt 를 통하여 해당 파일을 Staging Area에 올린다.
  • $ git commit -m “First Commit” 을 통해 Local Repository 로 Commit을 한다.
  • $ git log를 통해 Commit 내역을 확인해본다.



5. Github 란?

  • git commit 을 통해 버전을 만들면 내 Local 저장소에 있는 Repository에만 저장이 된다.
  • 그러면 다른 사람들과 협업을 할 수 없다.
  • 어떻게 다른 사람들과 원격으로 협업 할 수 있는가?
  • 이럴 때 사용하는 것이 Github이다.
  • Github는 각자의 PC에만 존재하는 Local Directory의 버전을 인터넷에서 저장/관리해주는 서비스이다.
  • Github에 Push 를 하면 우리가 지금까지 만든 Local Directory 내의 모든 버전들의 내역들이 한 번에 저장이 된다. ( 이 것으로 버전 관리를 하고, 백업도 가능하다. )
  • 구글 드라이브나, 클라우드와의 차이점이 이부분이다. 드라이브나 클라우드는 마지막 버전만이 저장되며, 이전 내역들은 알 수 없다.



6. Github에 Push 하는 방법

  • Github에 회원가입을 한다.
  • 원격 Repository를 하나 만든다.
  • 해당 Repository의 URL을 복사한다.
  • $ git remote add origin URL : url에 있는 원격저장소를 origin이라는 단축이름으로 추가한다.( origin 은 바꿔도 된다. 해당 URL에 대한 Key값이라 생각하면 된다. )
  • $ git push -u origin master : 내 Local Repository의 master 브랜치에 있는 모든 Commit 내역을 origin 이라는 단축이름의 원격 리파지토리로 push 한다.



7. 소규모 프로젝트 협업을 위해 다른 개발자에게 권한 부여

  • 공유할 원격 Repository를 만든다.
  • 원격 Repository에서 Settings 클릭
  • Collaborators 클릭
  • 협업할 사람의 Github Email 추가
  • 협업자의 승인
  • 각자의 PC에서 서로 Commit & Push와 Pull을 하며 작업을 한다.



8. 대규모 프로젝트 협업을 위해 다른 개발자에게 권한 부여

  • 대규모 협업을 할 때에는 Pull Request 방법을 이용하는 것이 좋다.
  • 책임자(이하 A) 가 공유할 원격 Repository를 만든다.
  • 팀원(이하 B) 은 해당 Repository에 들어가서 우측 상단의 Fork를 누른다.
  • B의 계정에 해당 Repository가 생성된다.
  • 자신의 계정에 생긴 Repository에 가서 Clone or download를 누르면, URL이 나온다.
  • 각자 자신이 작업할 Directory에서 Git Bash를 켜고, $ git clone URL 을 통해 원격 Repository의 내용을 Local Repository로 복사하여 불러온다.
  • $ git checkout -b newbranch를 통해 newbranch라는 새 브랜치를 만들고, 들어간다.
  • 개발을 진행한다.
  • add 후 commit 한다. 이 때 협업 중이므로 커밋 메시지는 자세히 남겨준다.
  • $ git push origin newbranch를 통해 push를 해준다
  • 우리가 Fork를 통해 가져온 원격 Repository에 가보면 Compare & Pull 이라는 버튼이 생겨있다. 이걸 클릭한다.
  • Create pull request 를 통해 pull request를 전송한다.
  • A가 코드를 확인하고 Merge pull request를 통해 승인을 해주면, B가 수정한 내용이 Merge가 된다.
  • B는 이 때 사용한 Branch를 지워준다. ( 권장 ) $ git branch -D newbranch






results matching ""

    No results matching ""