[개발기초] Git 에 대해서
#Git 이란?
형상 관리 도구(Configuration Management Tool)
- 버전 관리 시스템
- Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어.
NOTE Git 이전에는 SVN 이라는 형상관리 도구를 많이 사용했다.
Git 의 장점
-
소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다. (브랜치를 통해 개발한 뒤, 본 프로그램에서 합치는 방식(Merge)으로 개발을 진행할 수 있다.)
-
분산 버전 관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있고,중앙 저장소가 날라가 버려도 원상복구할 수 있다.
-
팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다.
Git이 동작하는 과정
- 사본을 Local에 복사(check out)한다 (Working directory)
- 작업 된 내용을 staging area에 추가(add)한다
- staging area의 내용을 Local Repo(로컬 서버)에 저장(commit)한다
- Local Repo의 내용을 Remote repo에 저장(push)한다
Git 용어
-
Repository: 저장소를 의미하며,저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있다.
-
Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.
-
Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.
-
Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.
-
Head : 현재 작업중인 Branch를 가리킨다.
-
Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.
-
Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.
Git 주요 명령어
-
git init : 깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.
-
git help : 명령어를 잊어버렸다면 커맨드 라인에 “git help”를 쳐보자. 그럼 21개의 가장 많이 사용하는 깃 명령어들이 나타난다. 좀 더 자세하게 “git help init”이나 다른 용어를 타이핑하여 특정 깃 명령어를 사용하고 설정하는 법을 이해할 수도 있다.
-
git status : 저장소 상태를 체크한다. 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.
-
git clone : 원격 저장소의 저장소를 내 local에서 이용할 수 있게 그대로 복사해 가져온다.
-
git add : 이 명령이 저장소에 새 파일들을 추가하진 않는다. 대신, 깃이 파일들을 지켜보게 한다. 파일을 추가하면, 깃의 저장소 “스냅샷”에 포함된다.
-
git commit : 깃의 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업이다. 보통 “git commit -m “Message hear.” 형식으로 사용한다. -m은 명령어의 다음 부분을 메세지로 남긴다는 뜻이다.
-
git push : 로컬 컴퓨터에서 작업하고 커밋을 깃허브에서 온라인으로도 볼 수 있기를 원한다면, 이 명령어로 깃허브에 변경사항을 “push”한다.
-
git pull : 로컬 컴퓨터에서 작업할 때, 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업이다.
-
git log : 커밋 내역을 확인해보고 싶을 때 사용하는 명령어이다.
-
git branch :여러 협업자와 작업하고 자신만의 변경을 원한다면 이 명령어로 새로운 브랜치를 만들고, 독립적인 공간을 만든다. 새 브랜치를 “hello”로 지정하고 싶다면 “git branch hello”라고 쓸 수 있다.
-
git checkout : 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다. 만약 master 브랜치를 들여다 보고 싶으면, git checkout master를 사용할 수 있다.
-
git merge : 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다. “git merge hello”라고 입력한다면 hello브랜치에서 만든 모든 변경사항을 master로 추가한다.
Git 과 Github 의 관계
웹호스팅 서비스(Github)의 기능을 통해 push, pull, request와 같은 이벤트에 반응하여 자동으로 작업을 실행하게 할 수 있다.
Sourcetree
Gitflow
reference
https://velog.io/@shin6403/Git-이란
https://ux.stories.pe.kr/183
Comments