게임을 하고 저장하면 다음에 다시 게임할때 저장한 데이터를 불러와 게임하는것과 비슷한 원리이다.
텍스트파일 작업시 ctrl+z를 눌러 이전 작업으로 돌아갈수 있게 하는것과 비슷하다.
이렇게 내가 원하는 시점(버전)으로 이동할수 있게 해주는 것을 버전관리라고 하고 이것을 도와주는 툴을 버전관리 시스템이라고 한다.
개발은 팀단위로 프로젝트를 하기때문에 많은 인원이 한 프로젝트의 데이터를 추가/삭제/업데이트를 하면 어떤것이 진행중이고 최종업데이트 파일인지 확인할 길이 막막해진다.
이때 각자가 깃발을 만들어 원하는 시점마다 각각의 깃발을 꽂고, 깃발이 꽂힌 시점으로 자유롭게 이동할 수 있다면 편하게 새로운 소스코드를 추가하거나 삭제할 수 있을것이다.
이를 가능하게 해주는 소스코드 버전관리 시스템이 바로 Git이다.
Git으로 저장한 데이터를 로컬컴퓨터에서만 사용한다면 나 혼자만 사용할 수 있다.
만약 우리가 사진을 네이버클라우드에 올려놓으면 클라우드 아이디만 알면 누구나 다운받아 사진을 이용할 수 있듯이 GitHub은 우리가 Git으로 관리한 소스코드 프로젝트를 팀원들과 공유할 수 있게 전문적으로 호스팅할 수 있게 도와주는 사이트 중 하나이다.
Git을 사용하기 위해선 설치를 해야한다.
https://git-scm.com/
위 사이트에서 자신의 운영체제에 맞게 설치하면된다.
GitHub을 사용하기위해서는 GitHub에 가입해야한다.
https://github.com/
위 사이트에서 깃헙에 가입을 한다.
입력을 했다면 나의 로컬저장소와 GitHub이 연결된것이다!
커밋은 게임에서의 저장이라고 생각하면된다.
내가 미리 만들어 놓은 README.txt 파일이다.
위와같이 "사이트 설명 추가"라는 커밋메세지로 먼저 처음생성된 기존파일을 저장한다
이제 게임을 저장하듯이 아래와같이 README.txt 내용을 수정하고 다시 커밋을 해보겠다.
이렇게 내용을 변경하고 README.txt를 저장한다.
위 과정과 동일하게
1. git add 커밋에 추가할 파일이름
2. git commit -m "어떻게 변경했는지 이곳에 적는다"
git log
해당 명령어를 입력하면 우리가 저장했던 커밋의 목록이 쭉 나오게된다.
git checkout 커밋주소
git log명령어를 입력하여 나온 커밋중에 돌아가고싶은 커밋이 보이면
commit 옆에 길게써있는 주소를 복사하여 git checkout 커밋주소를 입력하면 해당 커밋으로 돌아가게된다.
나는 "사이트 설명 추가" 커밋으로 돌아가기 위해
git checkout 0e2b21207fd4594a13a8c26ceffc47226fdf311f 을 입력했다.
해당 명령어를 입력하고 다시 git log를 입력하니 "사이트 설명 추가" 커밋만 남은것을 확인할 수 있다.
그리고 다시 README.txt를 열어보면 아래와같이 우리가 수정전에 커밋했던 그 파일로 돌아가 있는것을 확인 할 수 있다.
해당 명령어를 입력하고 git log를 입력하면 최신커밋으로 다시 돌아간것을 확인할 수 있다.
협업을 하기 위해서는 로컬에서 버전관리를 하는것이 아닌 팀원들이 모두 접근할수 있는 원격저장소가 필요하다. 우리는 GitHub에서 그 원격저장소를 생성할수 있고 이 원격저장소를 repository라고 부른다.
GitHub사이트에 들어가 우측 상단에 + 버튼을 눌러 new repository로 새로운 원격저장소를 생성한다. 생성이 되었으면 아래와 같이 레포지토리 주소가 보인다.
해당 레포지토리 주소를 복사하여 터미널에 아래와 같이 입력한다.
원격저장소(레포지토리)의 코드와 버전전체를 내 로컬 컴퓨터로 내려받는것을 clone 이라고 한다.
우리는 지금까지 iTshirt-cat 폴더에서 모든 작업을 했다.
이제 우리가 작업한 폴더의 소스와 버전을 다른 폴더에 클론할 것이다.
나는 클론을 위한 새로운 폴더인 iTshirt-oct 폴더를 새로 생성했다.
이제 GitHub에서 우리가 클론할 레포지토리로 들어간다.
나는 우리가 방금 만든 iTshirt 레포지토리의 주소를 클론할것이다.
해당 레포지토리의 주소를 복사한다.
그리고 우리가 클론할 폴더에 들어가서 아래와 같이 명령어를 입력한다.
git clone 클론할 레포지토리 주소
이렇게 하면 클론이 되지만 우리가 이미 만든 폴더내에 다시 새폴더가 생성되어 그안에 소스코드와 버전이 들어있게된다.
git clone 클론할 레포지토리 주소 .
그래서 이렇게 주소 뒤에 한칸뛰고 점을 붙혀주면 새로폴더가 안생기고 파일만 클론이 된다.
명령어를 입력하니 우리가 만든 iTshirt-oct폴더에 GitHub에서의 iTshirt 레포지토리 파일이 클론된것을 확인할 수 있다.
이제 이 파일을 아래와같이 수정하고 커밋후 레포지토리에 푸쉬해보겠다.
우리가 iTshirt레포지토리의 주소를 클론했으니 아까 iTshirt 레포지토리가 아래와같이 우리가 변경한 내용이 반영된 것을 확인할 수 있다.
이제 다시 모든 상황을 되짚어 보겠다.
맨처음 만든 내 컴퓨터의 iTshirt-cat 폴더내에는 처음 README 내용이 적혀있다.
이 파일을 GitHub의 iTshirt레포지토리(원격저장소)에 올렸고
이 레포지토리주소를 내 컴퓨터의 iTshirt-oct 폴더에 클론하여 내용을 아래와같이 수정했었다.
수정한 파일을 다시 커밋하고 원격저장소에 푸쉬하니 iTshirt레포지토리(원격저장소)에 업데이트 된것을 확인할 수 있다.
이게 현재 iTshirt-cat폴더, iTshirt-oct폴더, iTshirt레포지토리(원격저장소) 의 상황이다.
위 파일이 있는 iTshirt-cat 폴더에 들어가 git pull origin master를 해보겠다.
README.txt 파일을 열어보니 레포지토리의 내용이 당겨져 반영된것을 확인할 수 있다.
참고서적 : 팀개발을 위한 Git GitHub 시작하기 / 정호영, 진유림 지음
유용한 정보 감사합니다!