협업 프로젝트에서는 버전관리가 반드시 필요하다. 시간이 지날수록 어느 파일이 최종 업데이트 파일인지 분간하기 어려워지기 때문이다.
Git은 소스코드 버전 관리 시스템으로 내가 원하는 시점마다 깃발을 꽂고 깃발이 꽂힌 시점으로 자유롭게 이동하여 새로운 소스코드를 추가하거나 삭제 할 수 있게 해준다. 오류가 일어나도 바로 전에 꽂은 깃발 시점으로 돌아가면 되므로 굉장히 유용하다.
대표적인 Git 호스팅 사이트 중 하나가 GitHub이다. 개발자로 입사지원을 할 때 대부분의 회사가 Github 주소를 옵션으로 요청한다. 필수적으로 적지 않아도 된다고는 하지만 없으면 추가 점수는 기대하기 힘들 것으로 예상한다.
GitHub은 현재 Microsoft에서 인수하였고 구글이 만드는 기계학습 라이브러리인 Tensorflow, 애플이 만든 개발언어 Swift, 그리고 Vue.js까지 다양한 오픈소스가 활발하게 운영되고 있다.
Git 호스팅 사이트에는 GitHub외에도 GitLab.com, BitButcket.org 등 여러 웹사이트가 있다. 특히 GitLab의 경우 NASA, Sony 등 10만개 이상의 조직이 사용하고 있다. GitLab프로젝트 자체가 오픈소스여서 직접 서비스 발전에 기여할 수도 있다.
✨연습하기 좋은 사이트 : https://learngitbranching.js.org/
설치환경 : Windows 10
설치파일 : Git 2.29.2 (Release : 2020-10-29)
git
을 입력한 후 엔터로 실행했을 때 아래와 같이 Git 기본 명령어에 대한 안내가 나오면 Git이 제대로 설치된 것이다.git --version
내 컴퓨터에 설치한 Git과 연결할 로컬 저장소가 필요하다.
로컬저장소 : 실제로 Git을 통해 버전 관리가 이뤄질 내 컴퓨터에 있는 폴더
나의 경우 취업을 위한 포트폴리오 페이지를 만드는 중인데 해당 내용을 git으로 관리해 보고자 한다.
내컴퓨터 ▶ 바탕화면 ▶ portfolio 폴더를 생성한다.
폴더에 프로젝트에 대한 설명이 담길 텍스트 파일인 'README.txt'을 생성한다.
텍스트 파일에 설명을 작성한다.
[portfolio] 폴더에서 마우스 오른쪽 버튼을 클릭하고 [Git Bash Here]를 클릭한다.
Git Bash 창이 열리면 git init
을 입력한다. (Git 초기화 과정)
'Initialized empty Git repository'라는 텍스트가 나오면 성공
↪명령어가 잘 수행되었으면 선택한 폴더에 [.git]이라는 숨김폴더가 자동으로 생성된다. Git으로 생성한 버전들의 정보와 원격저장소 주소 등이 들어있고 [.git]폴더를 로컬저장소라고 부른다.
⚡ [.git] 폴더를 보고 싶으면 폴더 상단 메뉴에서 [보기]를 선택하고 [숨김 항목]을 체크한다.
방금 생성한 README.txt 파일을 하나의 버전으로 만들어보자. Git에서는 각 버전을 Commit이라고 부른다.
먼저 버전관리를 위해 내 정보를 등록한다.
git config --global user.email "xxxxxx@gmaill.com"
git config --global user.name "xxxxxxx"
GitHub에서 관리할 예정이므로 xxx부분에 GitHub의 계정정보를 입력한다.
커밋(버전)에 추가할 파일을 git add README.txt
명령어로 선택한다. (스테이지작업)
git commit -m "포트폴리오 목차"
명령어로 커밋(버전)에 상세설명을 적는다.
⚡ -m
은 'message'의 약자, '1 file changed, 1 inserttion(+)'같은 문구가 나오면 성공
두번째 커밋을 만들어 보자. README.txt 파일일부를 수정하고 저장한다.
다시 git add README.txt
로 파일을 선택하고 git commit -m "포트폴리오 목차 수정"
이라는 설명을 붙여서 커밋(버전)을 만든다.
'1 file changed, 1 inserttion(+), 1 deletion(-)'같은 문구가 나오면 성공
현재 수정한 목차 내용을 가지고 있는 README.txt 파일에서 첫번째 커밋(버전)으로 돌려보고 다시 최신 버전으로 복구해 보자.
git log
명령어로 지금까지 생성한 커밋(버전)을 확인한다.
⚡ 가장 최근의 커밋(버전)이 최상단에 표시된다.
첫번째 커밋(버전)으로 되돌리기 위하여 커밋아이디를 복사하고 git checkout 81e62e49d58b0a6e979244fad1d5a6749a424ca3
으로 입력한다. (커밋아이디 앞 7자리만 작성해도 무방하다.)
'마지막 라인에 HEAD is now at 81e62e4 포트폴리오 목차'라고 보이면 성공
README.txt 파일을 열어보면 처음 목차로 돌아간 걸 확인할 수 있다.
다시 체크아웃 명령어로 가장 최신 커밋으로 돌아가보자. git checkout -
은 가장 최신의 커밋(버전)으로 돌아간다.
다른 개발자와 함께 버전을 관리하려면 원격저장소에 올려야 한다.
GitHub에서는 원격저장소를 Repository라고 부른다.
GitHub페이지에 접속하여 로그인한 후 상단 오른쪽의 [+] 아이콘을 클릭하여 New repository 메뉴를 선택한다.
Repository name에 원격저장소의 이름과 Description에 간단한 설명을 입력한다.⚡ MIT 라이센스는 '이 소스를 재가공해서 재배포해도 된다'는 비교적 널널한 편의 라이센스. 선택하게 되면 라이센스 파일이 생성된다.
원격저장소 주소가 아래와 같이 만들어졌다. 비어있는 부분은 사용자의 username이 들어간다. 아래에 명령어들의 간단한 소개가 나와있다.
GitHub에서 만든 [portfolioweb] 원격저장소 주소를 내컴퓨터의 [portfolio] 로컬저장소에 알려주고, 로컬저장소에서 만든 커밋(버전)을 원격저장소에 올려보자.
git remote add origin https://github.com/xxxxx/portfolioweb.git
명령어로 원격저장소 주소를 알려준다.git push origin master
명령어로 커밋(버전)들을 원격저장소에 올린다. 아래와 같은 텍스트가 나오면 성공. 혹시 중간에 GitHub 로그인 창이 뜬다면 로그인을 해주자. 다른 개발자가 올린 커밋(버전)을 내 컴퓨터에 받아와야 수정할수 있을 것이다.
GitHub의 원격저장소에서 오른쪽 상단의 Code를 누르면 Clone을 할 수 있는 주소와 Zip 파일로 다운로드 받을 수 있는 옵션이 나온다. Download Zip으로도 소스코드를 받을 수 있으나 원격저장소와 버전 정보가 제외되니 꼭 클론을 이용하여 내려받자.
Clone부분의 원격저장소 주소를 복사한 후 내려받기를 원하는 폴더에서 Git Bash를 열고 git clone https://github.com/xxxx/portfolioweb.git .
을 입력하자.
⚡ 한 칸 띄고 마침표를 찍는 이유는 현재 폴더에 내려받으라는 의미이다. 점을 찍지 않으면 폴더안에 [portfolio]폴더가 생성되므로 구조가 복잡해 질 수 있다.
지정한 폴더에 파일과 [.git] 폴더가 보이면 성공
파일을 수정한 후
git add 파일명
git commit -m "새로운 버전 설명"
git push origin master
의 순으로 원격저장소에 푸시한다. 원격저장소에 들어가서 새로고침을 하면 푸시한 커밋이 올라가 있는 것을 확인할 수 있다.
다른 개발자가 원격저장소에 새로운 커밋(버전)을 올렸을 때, 당연한 소리겠지만 로컬저장소에는 자동으로 업데이트 되지 않는다. 원격저장소의 새로운 커밋을 로컬저장소로 불러와 보자.
git pull origin master
명령어로 원격저장소에 새로운 커밋이 있다면 그걸 내 로컬저장소에 받아온다. ⚡Pull은 실제 코드를 내려받지만 Fetch는 소스트리만을 업데이트 한다.