souvenir

[개발자 도구] Git과 Git Hub 본문

2020년/git & github

[개발자 도구] Git과 Git Hub

풀빵이 2020. 5. 12. 18:32

0. 들어가며

 '개발자로서 커리어를 쌓고 싶다'는 생각이 들면서 이것저것 검색해 보면 종종 들을 수 있는 것이 'Github(깃허브)'이다. 검색만으로는 대략적으로 '개발자들이 자신의 소스들을 기록하고 공유할 수 있으며, 자신의 포트폴리오로서도 활용할 수 있는 클라우드' 정도로만 이해하였다.

  그런데 Github와 비슷하게 Git이라는 것도 존재한다. 이 둘의 차이점은 무엇일까?

 

 

 

1. Git과 Github

  결론부터 이야기하자면 둘은 크게 다르지 않다.  Git은 버전 관리 프로그램(도구)이며,

  Github는 Git이라는 프로그램을 기반으로 업무를 하는 사람들이 자신의 소스, 업부, 기록등을 공유하는 플랫폼이라고 할 수 있다.

 

 

Git

  • 버전관리 시스템.
  • Git 외에도 다른 시스템도 있지만 가장 대중적이고 강력한 시스템으로 알려져 있음
  • 버전 관리가 목적이기 때문에 개발 목적 외에도 번역 협업을 통해 버전 확인이 필요한 업무 목적으로 다양하게 활용되고 있음.

#GitHub

  • Git 기반으로 하는 소셜 플랫폼
  • 소스 코드를 저장하는 repository(의미 : repository) 통해 오픈 소스를 공유할 있음

   Ex) 오픈소스의 예제 : react (페이스북에서 만듦)

 

 

 


 

 

2. Github와 내 컴퓨터 사이의 보이지 않는 영역

 

  Github는 플랫폼이기에 당연히 내가 수정하고 작업을 할 수 있는 공간과, Github 내의 공간이 보이지는 않지만 분리되어 있다고 볼 수 있다. 정확한 명칭을 사용해서 표현하자면 아래와 같이 표현할 수 있다. 

 

 

출처 : http://navtechno.blogspot.com/2016/02/git-basics.html

 

 

  각각의 영역에 대한 명칭과, 영역 간에 파일을 이동할 수 있는 명령어를 통해 Github를 다양하게 활용할 수 있다. 

 

  이 글에서는 

1) 영역에 대한 설명

2) Git의 주요 용어

3) 영역 간에 파일을 이동할 수 있는 주요 명령어

  를 정리해보고자 한다. 

 

 

 


 

 

3. Git 활용

 

  1) Git의 기능

1. Branching and Merging

  1) Branching(가지) : 가지를 새로 만드는 작업

  2) Merging : 가지를 합치는 작업

 

2. Distributed ( 분산시스템 )

  1) Remote repository(in github) : github 내의 저장소

  2) Local repository : 나의 컴퓨터의 저장소

 

 

  2) 내 컴퓨터와 github 사이의 영역

  작업을 하는 나의 컴퓨터와 github 사이에는 크게 working area, staging area, git repository 등으로 나눌 수 있다. 

  working area는 말 그대로 작업을 하고 있는 내 컴퓨터 영역 자체를 의미하며, git repository는 아래서 더 설명하겠지만 git 내의 저장소를 의미한다. 특별히 관심을 가져야하는 영역은 staging area이다. 

 

 

[Staging Area]

  • 의미 : 충돌을 해결하거나 이전에 '버전관리를 선택적으로 하기 위해' 만들어진 임의의 공간
  • commit 대가 상태. 임시저정과는 다른 의미.
  • 특징 : 여기서 부터는 github 관리를 받음, Commit 가능해짐.
  • How to? Git add라는 명령어를 통해 올릴  있음. (working directory -> staging area)

 

* commit에 대해서는 아래 '주요용어'에서 설명하고자 한다.

 

 

 

 


 

 

  3) GIt의 주요 용어

: Repository, Branch, Commit

 

 

 

1. Repository

 

  : 영어 단어의미 자체처럼 '저장소'를 의미함. 코드의 모든 변경사항을 담고 있음.

  : 크게 github 내의 remote repository와 작업자의 컴퓨터인 local repository로 구분해서 생각해볼 수 있음.

 

 

 

 

출처 : https://www.git-tower.com/learn/git/ebook/en/command-line/remote-repositories/introduction

 

 

 

 


 

 

 

 

2. Branch

 

  : 각각의 개발단계 따른 소스들의 기록(log)라고 할 수 있음.

 

출처 : https://backlog.com/git-tutorial/branching-workflows/

 

 

  • Master branch : 사용자(end user)들에게 직접 배포하는 최종 소스들의 집합
  • develop branch : 개발 중인 버전의 소스코드. 여기서 충분한 테스트와 버그점검을 통해 Master branch merging
  • feature branch : 하나하나의 기능을 담고 있음.
    • 필요에 따라서 hotfix release branch 만들  있음.

 Master <- hotfix <- release <- develop <-feature

: 위로  수록 안정성(stability)  높다고   있음.

 

 

 

 


 

 

 

 

3. Commit

  • 의미 : local repository 변경사항을 기록하는 명령어.
  • 목적 :  수정한 변경사항을 메시지로 기록하고 변경사항을 확인하고 관리하기 위함.
  • 명령어 : git commit -m '메세지'

 

  [기타 관련 명령어]

 

  *출처 : https://www.git-tower.com/learn/git/commands/git-commit

  1. -m <message>
    • Commit 메시지를 기록할  있는 명령어.
  2. -a
    • 최근에 변경된 '모든 파일' commit 적용할  있는 명령어.
    • 그러나 untracked 파일(add되지 않은 파일) 포함되지 않음.
  3. --amend
    • 최근에 staging area 올린 파일의 commit 수정하거나 새로운 commit   있는 명령어.
    • Git 가장 최근의 commit으로 변경해서 적용됨.
    • 주의! 이것은 remote repository push되기 전의 상태에서만 적용할  있음.

 

 

 

 

 


 

 

  4) 주요 명령어

    4-1 ) 파일들을 영역 간에 이동 및 복사하는 명령어

  : fork, clone, commit, pull, push

 

    1. fork : 기존의 오픈소스를  저장소로 복사해오는 (github 내에서)

    2. clone :  컴퓨터에서 수정하고 활용하기 위해 remote repository에서 local repository 복사해오는 작업
      (Remote repository->local repository)

    3. add : staging area에 파일을 추가하는 명령어

    4. commit : local repository에 변경사항을 기록하는 명령어

    5. push : clone 통해 수정한 코드를 remote repository 적용시키기 위한 명령어
      (local repository->Remote repository)

      Ex) git push origin master  
      //origin : 내가 변경한 소스, master : master brunch 의미

    6. pull :  파일을 병합시키기도 리모트 레파지토리의 변경사항을  리파지토리에도 적용하기 위한 명령
      (Remote repository->local repository)

      Ex) git pull origin master
       당연히 master brunch 함부로 내가 변경할 수는 없음그렇기에 이렇게 복사를 하는 .

 
  **
참고

  1. Origin : local repository에서 내가 수정한 파일  소스들의 모음

Upstram : local 기준에서 상위에 있는 repository의 소스. Master branch remote repositoy에서 변경된 사항들을 local 바로 적용하는데 upstream 활용하면 유용함.(pull 명령어 사용하기)

 

 

 

 

    4-2) Git repository 현재 상태  변경사항을 확인할  있는 명령어

  • status : 파일의 상황 확인. 수정된 파일을 확인할  있음.
  • diff : 변경사항 확인
  • log : 변경 기록들의 모음

 

 

   4-3) Commit되지 않은, staging area 있는 파일 수정

참고 : https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things

 

  • reset HEAD <file> : staging area 있는 파일을 working area 내리고 싶을 
  • checkout -- <file> : 변경된 파일이 있으나  파일 자체를 적용하고 싶지 않을 

cf) staging area 있는 파일의 commit 수정하고 싶을  : --amend

 

 

 

 

 

 

 

 

 

 

Comments