supergravity

Git 처음 시작하기 본문

개발중 기억해야 할만한 것들

Git 처음 시작하기

supergravity 2020. 12. 4. 16:04

Git은 무슨 목적으로 사용하는 것일까?

 

git을 구글에 검색을 해보면 분산 버전 관리시스템이다.

 

그러면 분산 버전 관리 시스템이 정확하게 무엇일까?

 

분산 버전 관리 시스템은 분산 버전 관리(Distributed revision control, 또는 Distributed Version Control (Systems) (DVCS), 또는 Decentralized Version Control (Systems))는 소프트웨어 버전 관리를 위한 시스템이다. 이 시스템은 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 것이 특징이다.

 

분산 버전 관리 시스템은 대형 프로젝트에 더 적합한 편인데, 그 이유는 개발자들이 독립적으로 작업한 다음에 변경사항을 병합(또는 거절)할 수 있기 때문이다. 이 분산 모델은 사용자 지정 소스 코드 기여 워크플로의 유연한 채택을 가능케 한다.

(By Wiki)

 

결국 협업과 버전 관리의 효율성을 위해 사용한다고 보면 된다.

 

 

그럼 GItHub는 뭐임?

github는 git을 사용하는 사람들을 지원하는 웹호스팅 서버이다.

 

NOTE : 웹호스팅 서버는 홈페이지와 같은 것들을 대신 운영해주는 서버를 말한다 (EX 티스토리, 네이버 블로그, 유튜브?)

 

결국 협업을 하기 위해 인터넷을 이용하여 분산 버전을 관리하기 위한 git의 도구라고 보면 된다.

 

Git , GitHub기초

 

git은 아까 말했듯이 분산 버전 관리 시스템이다. 다시 말하면 중앙 서버에 접속하지 않은 상태에서 소스코드를 수정할 수 있고 버전을 관리할 수 있어야 한다. 

 

위의 목적을 구현하기 위해 git은 크게 아래와 같이 분류된다.

 

원격 저장소 -  호스팅 서버이다. 

 

로컬 저장소 - 개인의 컴퓨터이다.

 

로컬 저장소 작업 흐름  - 작업 디렉터리(Working directory) -> 인덱스(Index) -> HEAD

 

로컬 저장소 -> 원격 저장소 - 버전을 고려하여 로컬에서 코딩한 자료를 원격에 올리기 

 

원격 저장소 -> 로컬 저장소 - 원격의 코딩을 로컬로 받아오기

 

NOTE : 버전을 고려하여는 다음장에 설명...Ex brench  merge tag

 

 

 

원격 저장소

깃허브 페이지에서 로그인 후 만들 수 있다. 저장소를 만들고 나면 원격으로 연결할 수 있는 주소 1개를 받는다. 그 주소를 이용하여 

나의 로컬 저장소 (개인 컴퓨터)와 코드를 주고받으면 된다.

 

로컬 저장소

로컬 저장소(개인 컴퓨터)에 git을 설치를 한다. git을 설치하게 되면 쉘에서 git이라는 명령어를 사용할 수 있다. git 명령어는 위에 설명된 git의 개념들을 쉘에서 간편하게 실행을 할수 있다. 그러면 명령어에 대해서 살펴보자.

 

git init : 특정 폴더에서 실행을 할수 있다. git의 로컬 저장소로 정의를 한다. 로컬 저장소는 특정 폴더들이 될 수 있다. 이 명령어를 수행한 이후로 위에서 언급한 로컬 저장소 작업 흐름이 시작된다. 

 

git status  :  워킹 디렉터리의파일들의 상태를 확인하는 명령어이다. 

 

git add 파일 이름 : 워킹 디렉터리의 모든 파일은 크게 Tracked(관리대상임)와 Untracked(관리대상이 아님)로 나눈다. Tracked 파일은 이미 스냅숏에 포함돼 있던 파일이다. Tracked 파일은 또 Unmodified(수정하지 않음)와 Modified(수정함) 그리고 Staged(커밋으로 저장소에 기록할) 상태 중 하나이다. git init 이후 Tracked 파일은 아무것도 없다. git add 파일명. py을 쉘에서 실행하게 되면 파일명. py가 Tracked 상태가 되면 수정된 기록이 저장된다.  즉 인덱스(관찰하고 있는 파일 목록)에 추가를 하는 것이다.

 

git commit  -m "확정에 대한 코멘트" : 변경 내용을 HEAD로 만드는 역할을 한다. HEAD는 원격 저장소에 올린 준비가 마친 애들의 집단이다.

 

git remote add origin 원격 서버 주소 : 원격 저장소의 위치를 로컬 저장소에 알려주는 역할을 한다. 브랜치를 원격에 올리기 전까지 다른 사람들이 나의 브랜치를 건들 수 없다.

 

git push origin master or branch_name :   작성된 사항을 원격 저장소에 저장을 한다. 저장 시 brench를 설정할 수 있다.

 

git pull

git clone /로컬 경로 or git clone 사용자명@호스트:/원격 저장소 주소 :  로컬 저장소를 복사해오는 역할을 한다. 

또한 위에서 언급한 원격 저장소 -> 로컬 저장소의 역활을 수행할 수 있다. 

처음 저장소를 Clone 하면 모든 파일은 Tracked이면서 Unmodified 상태이다. 

또한 git remote add origin 원격 서버 주소는 등록된 상태이다.

 

NOTE : 마지막 커밋 이후 아직 아무것도 수정하지 않은 상태에서 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식한다. 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋한다. 이런 라이프사이클을 계속 반복한다.

 

 

 

버전 관리 및 디버그 - 브랜치와 merge는 다음에

참고할 블로그  git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge-%EC%9D%98-%EA%B8%B0%EC%B4%88

 

Git - 브랜치와 Merge 의 기초

Merge 시에 발생한 충돌을 다루는 더 어렵고 요상한 내용은 뒤에 고급 Merge 에서 다루기로 한다.

git-scm.com

rogerdudler.github.io/git-guide/index.ko.html

 

git - 간편 안내서 - 어렵지 않아요!

 

rogerdudler.github.io

 

git checkout -b 브랜치 이름 : 브랜치를 만들고 작업을 브랜치로 갈아탄다.

 

NOTE : 가지는 안전하게 격리된 상태에서 무언가를 만들 때 사용해요. 여러분이 저장소를 새로 만들면 기본으로 master 가지가 만들어집니다. 이제 다른 가지를 이용해서 개발을 진행하고, 나중에 개발이 완료되면 master 가지로 돌아와 병합하면 돼요.

 

git checkout master : 마스터 가지로 다시 돌아온다.

 

git branch -d 브랜치이름 :  브랜치를 삭제한다.

'개발중 기억해야 할만한 것들' 카테고리의 다른 글

aws EC2 django-rest 배포  (0) 2021.01.02
HTTP 요청 헤더  (0) 2021.01.01
스코어 정하기  (0) 2020.12.22
expo production mode and development mode  (0) 2020.12.18
git - 브랜치 기록  (0) 2020.12.08
Comments