본문 바로가기
DevOps/Git,Github

[git,github] 1) git, github(깃,깃허브) 개념,명령어,다운로드, 가입 총 정리

by 스파이디웹 2021. 4. 2.
728x90

이번 시리즈는 총 3개의 시리즈로 이뤄져 있습니다.

1. git,git hub의 개념, 명령어, 설치와 가입 및 리포지토리를 생성하기

2. git, git hub 실습

3. git, github을 이용한 협업

 

 

그 중 이번 포스트는 git,git hub의 개념, 명령어, 설치와 가입 및 리포지토리를 생성하기 를 해보겠습니다.


1. Git 이란?

  • 형상 관리 도구(Configuration Management Tool) 중 하나.
  • 참고로 형상 관리 도구는 버전 관리 시스템이라고도 한다.
  • Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어.
  • 파일의 변경정보 히스토리와 저장소를 여러 클라이언트에 복제하여 관리하는 DVCS(Distribution VCS)의 하나로, 서버에 문제가 생겨도 복제한 clone을 통해 복구가 가능하다는 특징
  • Git의 가장 큰 특징은 데이터를 파일 시스템 스냅샷의 연속으로 취급한다는 것이다. , 커밋하거나 저장할 때의 그 순간을 중요하게 여겨, 파일이 달라지지 않았으면 새로 저장하지 않고, 단지 이전 상태의 파일에 대한 링크만 저장한다. 데이터를 스냅샷의 스트림 처럼 취급

2. Git의 장점

  • 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식(Merge)로 개발을 진행함으로써 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능
  • 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행 할 수 있으며, 중앙 저장소가 날라가도 다시 원상복구 할 수 있다.

3. Git 관련 용어

  • Repository: 저장소를 의미하며, 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장합니다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있습니다.
  • Working Tree: 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점
  • Staging Area: 저장소에 커밋하기 전에 커밋을 준비하는 위치
  • Commit: 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업
  • Head: 현재 작업중인 Branch를 가리킵니다.
  • Branch: 가지 또는 분기점을 의미하며, 작업을 할 때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을 때 Merge하여 작업을 합니다.
  • Merge: 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미합니다.

4. Git의 4가지 영역

1) Working Directory(작업 영역)

  • 실제 프로젝트 디렉토리
  • .git 이력과 관련 정보가 저장 된 .git을 제외한 모든 영역
  • 실제 코드의 추가, 수정, 삭제 작업이 이루어지는 영역

 

2) Repository(저장소)

  • 파일, 폴더를 변경 이력별로 저장해 두는 곳
  • .git 디렉토리내 존재하며 2가지로 나뉩니다.
  • 2.1)local Repository: 개인 PC에 파일이 저장되는 개인 저장소
  • 2.2)Remote Repository: 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유도 가능한 저장소

 

3) Index(Staging Area)

  • Working Directory에서 Repository로 정보 저장 전 준비 영역
  • 파일 상태를 기록, 스테이징 한다고 표현 합니다.
  • .git/index 파일로 관리합니다.
  • 3.1)git add: Working Directory에서 Index 영역으로 정보가 저장됨
  • 3.2)git commit: Index 영역에서 Repository로 정보가 저장됨.

 

4) stash

  • 위의 3가지 영역과 다른 별개의 임시 영역
  • 임시적으로 작업사항을 저장해두고 나중에 꺼내올 수 있습니다.

5. Git의 자주 사용되는 필수 명령어

git init:

  • 버전 관리 하고 싶은 폴더에서 초기화를 하는 준비 작업

git branch:

  • 독립적인 공간을 만든다.
  • 새로 만든 branch lab1은 master와 완전히 동일한 상태를 가진 공간
  • 브랜치에서 수정을 한 후 커밋 하면 lab1에만 기록되며 master 브랜치에는 어떠한 영향도 주지 않습니다.
  • 원하는 만큼 빠르게 branch를 만들 수 있습니다.
  • 실험 중 다른 브랜치로 돌아가야 할 때: checkout master로 head를 옮겨야 합니다.
  • (작업 중인 위치를 가르키는 가상의 커서가 존재하는데, 이를 git에서는 HEAD라고 한다.)

checkout:

  • 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다.

git commit:

  • 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업

pull:

  • 리모트 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업을 pull이라고 한다.

master:

  • git init을 했을 때, default로 만들어지는 가지(branch)가 'master'


6. Git 나머지 기본 명령어

git init:

  • 현재 디렉토리에 .git  디렉토리를 만든다.

 

git status:

  • 파일의 상태를 확인

 

git status -s/ status --short:

  • 짤막하게 상태확인
  • 두자리의 알파벳으로 각 디렉토리에서의 상태표시

M_ : Working Tree에서 수정한 후 Staging area로 넘긴 상태

A_ : 새로 생긴 파일을 Staging area넘긴상태

_M: Working tree에서 수정만 한 상태 (Unstaged)

MM: 수정한 파일을 Staged  시키고 또 수정하여 Unstaged이기도 한 상태

 

git clone <URL>:

  • 프로젝트에 참여하거나 git저장소를 복제함
  • 기존 저장소를 clone하여 프로젝트의 히스토리를 전부 받아온다

 

git add 파일명:

  • 파일을 staging 상태로 만든다

 

git commit 파일명:

  • 파일 수정 후, add * 을 통해 Staged한 파일을 commit 함
  • commit -m “message”를 통해 메세지를 추가한다
  • commit -a 를 통해 add(staging)을 건너 뛸 수 있다

 

git rm 파일명:

  • 파일 제거 명령어
  • stage 상태가 되고, commit을 통해 삭제가 된다

 

git rm -- chached 파일명:

  • Staging Area 에서만 삭제하고, 워킹디렉토리에서는 남김

 

git mv 원래파일명 바꿀파일명:

  • 파일 이름 바꾸기

 

기타 기호:

*: 문자가 없거나 하나 이상

[abc]: 중괄호 안 문자 중 하나

[0-9]: 구간 안의 문자 하나

? : 문자 하나

a/**/b: a.b 사이의 모든 디렉토리

\ : 조건에 해당하는 모든 파일 (ex. \*.log : .log 파일 전체, \*~: ~로 끝나는 파일 전부)

 


7. Git 다운로드

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

1) 각자의 OS에 맞는 git을 다운받습니다.

 

2) 이후 설치에 관한 옵션들은 모두 디폴트로 설치합니다.


8. Github란?

  • Github는 소프트웨어 개발 프로젝트를 위한 소스코드 관리 웹 호스팅 서비스
  • 소스 코드를 열람하고 간단한 버그관리, SNS기능을 지원
  • 버전관리가 가능

9. Github에서 가장 중요한 3가지

1.커밋(commit)과 푸쉬(push)

  • 커밋(commit): 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업
  • 푸쉬(push): 파일을 추가하거나 변경 내용을 원격 저장소에 업로드하는 작업

 

2.로컬저장소와 원격 저장소

  • 저장소: 파일이나 디렉토리를 저장하는 장소, 변경 이력을 관리하고자자하는 디렉토리 등을 저장소의 관리하에 두는 것
  • 로컬 저장소: 자신의 컴퓨터에 있는 저장소
  • 원격 저장소: 서버 등 네트워크에 있는 저장소

기본적으로 로컬 저장소 -> 원격 저장소 순으로 저장하게 된다.

 

3.브랜치(branch)

  • 소프트웨어 개발은 현재 출시하고있는 버전의 유지 보수를 하면서 새로운 기능 추가 및 버그 수정을 같이 한다.
  • 브랜치(branch)는 이러한 버전관리를 위한 개념

10. GitHub 개인 계정 생성 및 Repository 만들기

1) 아래의 링크에서 github 계정을 생성

https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

2) New 버튼을 눌러 새 repository를 생성

 

이것으로 github 계정과 원격 저장소인 git hub repository 생성을 마쳤습니다.

 

*사용법에 관해서는 다음 시리즈를 참고해주세요.


*.ipynb(jupyter notebook 파일형식)을 .py 스크립트로 변환하시는 방법이 궁금하시면 아래의 링크를 참조해주세요.

https://spidyweb.tistory.com/297

 

[Python] (.ipynb) jupyter notebook 파일 형식 -> (.py) 파이썬 스크립트 변환하기

.ipynb 파일은 jupyter notebook에 사용되는 파일 형식으로써 key:value 형식인 json파일 형식으로 표현됩니다. 따라서 git hub 에 올리게 될 경우 다음 사진과 같이 표현되어 python code를 알아보기 힘듭니다..

spidyweb.tistory.com

2편 실습하기(작성 중)

https://spidyweb.tistory.com/298

3편 source tree 사용법(작성 중)

https://spidyweb.tistory.com/299

 

728x90

댓글