이번 시리즈는 총 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 다운로드
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 계정을 생성
2) New 버튼을 눌러 새 repository를 생성
이것으로 github 계정과 원격 저장소인 git hub repository 생성을 마쳤습니다.
*사용법에 관해서는 다음 시리즈를 참고해주세요.
*.ipynb(jupyter notebook 파일형식)을 .py 스크립트로 변환하시는 방법이 궁금하시면 아래의 링크를 참조해주세요.
https://spidyweb.tistory.com/297
2편 실습하기(작성 중)
https://spidyweb.tistory.com/298
3편 source tree 사용법(작성 중)
https://spidyweb.tistory.com/299
'DevOps > Git,Github' 카테고리의 다른 글
[git,github] 3) git, github(깃,깃허브) 개념,명령어,다운로드, 가입 총 정리 (0) | 2022.01.12 |
---|---|
[git] fatal: Not a valid object name: 'master'. 오류 해결 (0) | 2021.11.26 |
[git 오류 해결] ! [rejected] main -> main (non-fast-forward)오류 해결 (0) | 2021.11.26 |
[git,github] 2) git, github(깃,깃허브) 실습하기 (로컬 저장소, 원격 저장소에 저장 및 형상 관리 방법) (2) | 2021.10.26 |
댓글