본문 바로가기

■ 프로그래밍/Front-end

Git & GitHub (1) - 정의, 명령어

해당 글에 틀린 것을 수정하고 보완하여 2020.07.24에 기술블로그(https://howdy-mj.netlify.app/git/git-intro/)에 다시 올렸습니다. 

 

-- 원글 --

 

진짜 최종.jpg

 

대부분의 사람들이 과제 혹은 업무를 진행할 때 한 번쯤 했을 법한 일이다. 

어떤 것이 진짜 최종이고, 어느 부분이 수정되었는지 기억이 나지 않아 결국 파일 하나하나 열어보면서 확인한다. 

 

개발 할 때에도 마찬가지이다. 개인이 업무를 진행하는 것과 다르게, 개발은 수십 명의 개발자가 동시에 한 프로젝트를 진행한다. 때문에 업데이트, 수정 관리가 무척 중요하다. 

만약 에러가 났는데 이전 파일이 없다면 처음부터 다시 작업해야 하는 경우가 생길 수 있다. 또한 동시에 한 코드를 수정하다 합치면 어디서 꼬인건지 알 수 없다. 

이를 해결하기 위해 나온 것이 바로 Git & GitHub이다. 

 

Git

Git은 VCS(Version Control System), 여기서 version은 소스코드(source code) 파일의 버전을 말하며, 변경사항 내역을 관리하는 시스템이다. 

 

Git은 위의 문제를 해결하기 위해 버전들을 디렉토리에 저장하는 것이 아니라, 다른 공간에 저장했다. 파일의 버전별로 수정 사항이 생기면 수정된 내용, 날짜 등의 메타데이터를 다른 공간에 저장한다. 이런 저장 공간을 version database라고 부른다. 

Version Database

다른 저장 공간에 저장한 후, 비개발자와 협업을 하기 위해 Version Database를 서버에 올리고 공유한다. 이 서버를 Central VCS Server(중앙 버전 관리 서버)라고 칭하며, 모두 각자 컴퓨터에 최신 버전의 코드들만 다운로드 받아 작업한다. 

GitHub가 바로 이런 개발자간의 협업을 위한 중앙 서버이다. 

Central VCS Server

그리고 개발자들이 실수로 코드를 삭제하거나 손상시키는 것을 방지하기 위해 Distributed Version Control System(분산 버전 관리 시스템)을 통해, 최신 버전의 코드와 수정 내역들이 있는 메타데이터 전부를 갖고 있는다. 

Distributed Version Control System

 

Git Stages

Git을 사용해서 버전관리를 할 때 크게 3가지 상태 중 하나에 있다. 

 

Git 상태

Modified: 수정되었지만 아직 committed되지 않은 상태의 파일을 뜻한다. 

Staged: 곧 commit될 파일을 뜻한다. 이런 상태가 있는 이유는, 에러가 나면 되돌려야하기 때문에 중간 상태를 저장을 하는 것이다.

Committed: 수정 사항들이 git에 저장된 상태를 뜻한다. (commit을 찾아보면 '~을 적어두다'라는 동사가 있다. 이를 의미하는게 아닌가 싶다)

 

Git flow

 

repository

Git repository는 파일(소스코드)이나 폴더를 저장해 두는 곳으로 Local repository, Remote repository로 나뉜다. 

Local repository는 자신의 컴퓨터에 저장되어 있는 저장소를 뜻한다. 

Remote repository는 여러 사람이 함께 공유하기 위한 저장소(ex. GitHub)를 뜻한다. 

 

평소 자신의 컴퓨터에서 작업한 후, 소스코드(파일)을 공유하고 싶다면 Remote repository(ex. GitHub)에 업로드 하면 되고, 반대로 다른 사람의 소스코드(파일)을 Local repository로 가져올 수 있다. 

 

repository를 사용하기 위해서는 몇 가지 명령어를 알아야 한다. 

 

git init: git repository 생성

git add: 중간 상태 저장(modified된 파일을 staged 상태로 옮길 때 사용, 새롭게 추가된 파일(untracked 파일)도 수정사항이라 봄)

git commit: staged된 파일을 commit 할때 사용

git push

git diff: modified된 파일만 사용 가능하며, 어떤 수정 사항들이 적용됐는지 볼 때 사용

git status: 현재 어떤 상태에 있는지 알려줌

 

(윈도우는 git bash를 다운받고 하시면 됩니다)

 

1. Local repository 생성

// pwd로 현재 디렉토리 확인 가능
// cd로 원하는 위치로 가서 mkdir로 폴더 생성

mkdir kmj // 폴더 생성
cd kmj // kmj폴더로 이동

git init // local repository 생성

2. GitHub에서 Clone

// cd로 원하는 위치로 이동

git clone 주소 // 내 컴퓨터에 복제해 오기
ls // 잘 복제되었는지 확인
cd 폴더명 // 폴더명으로 이동

/*

git remote add origin 주소 (원격지 주소에 연결하기)
git remote -v (원격 저장소 표시)

*/

 

이후 수정되는 파일들은 add, commit, push로 GitHub에 올릴 수 있다. 

git add .   // 수정된 파일 전부 stage 상태로 변경
git add -A  // 수정된 파일 전부 stage 상태로 변경
git add 파일명.확장자 // '파일명.확장자'만 stage 상태로 변경

git commit -m "커밋내용" // 어떤 내용이 변경되었는지 잘 적어놓는 것이 좋다

git push origin master // origin [브랜치명], push작업이 끝나면 GitHub에서 확인 가능

작업을 하다 git이 어떤 상태인지 궁금하다면 git status를 치면 확인할 수 있다.