0. Intro : Git의 탄생배경
파일을 편집 전 상태로 되돌리고 싶을 때 어떻게 하고 있는가?
가장 간단한 방법은 편집하기 전에 파일을 미리 복사해두는 것이다. 즉, 파일과 폴더명 뒤에 편집한 날짜를 붙여주는 방식.
하지만, 파일을 편집할 때마다 매번 복사하는 일은 번거롭기도 하고 실수할 가능성도 많다.
또는 여러 사람들과 함께 협업할 때 파일 관리를 어떻게 하는가? 보통은 클라우드를 사용할 것이다.
하지만 만약 두 사용자가 동시에 같은 파일을 수정하고 동시에 업로드 한다면?
잘못해서 내가 한 부분이 날라간다면?
생각만 해도 끔찍하다.
위의 두 문제를 해결하기 위해 만들어진 것이 Git과 같은 버전관리 시스템이다.
버전관리 시스템(Version Control System-VCS)
한 유튜버의 말을 빌려 표현하자면 타임머신과 유사하다. 타임머신은 시공간을 넘나들 수 있는 기계로 과거 혹은 미래로 자유롭게 시간여행이 가능한 기계이다.
버전관리 시스템(이하, VCS라 부르겠다.)도 유사하다. 우리는 VCS를 이용해서 시간여행을 할 수 있다. ( 비록 현실이 아니지만.. )
-파일 변화를 시간에 따라 기록했다가 이후에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템.
=파일 변화를 시간에 따라 기록했다가 나중에 특정 시점을 다시 꺼내올 수 있는 시스템.
즉 동일한 파일에 대해 여러가지 버전을 관리할 수 있다.
둘 다 같은 말이다. 즉 VCS를 사용하면 파일의 변화를 시간에 따라 기록하고, 기록한 것 들 중 한 시점의 파일을 다시 꺼내올 수 있는 것!(이해가 안가면 타임머신을 VCS, 우리 지난 과거들을 VCS로 기록한 파일 , 타임머신을 타고 해당 과거로 가는 것을 한 시점에 파일을 꺼내오는 거라 생각하자.)
VCS를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 문제를 일으켰는지도 추적할 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있다. VCS를 사용하면 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다. 이런 모든 장점을 큰 노력 없이 이용할 수 있다.
이때 버전(version)이라는 단어가 어색할 수도 있는데 그냥 프로그램 v1.0, v1.1, v2.0 버전을 관리한다는 거랑 똑같다. 게임에서 저장하기 기능과 패치버전을 생각하면 이해가 쉽다. (한때 게임좀 했다는 사람은 한 번에 이해가 갔을 것.)
-버전이 뭔지는 알겠는데 왜 그 버전을 관리한다라고 하는 것 인가?
예를 들어 어떠한 개발자가 프로그램을 v 1.0까지 제작했고, v 1.1을 개발 중에 있는데,
갑자기 프로그램이 실행되지 않는 문제가 생겼다면?
디버깅을 시도했지만 무슨 에러인지 잘 모르겠다면?(ㅠㅠ)
이런 경우 v 1.0을 따로 저장해 놓지 않았다면 큰 낭패일 것.
이럴 때를 대비해 각각 프로그램을 버전별로 따로 저장해 두면 해결하기 쉽다.
1. Hello Git & GitHub
-Git
Git이란 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.
Git은 프로젝트 폴더안에 숨김폴더을 생성하여 이전 기록과 달라진 부분들을 기록하고, 되돌아 가고 싶은 경우 그 달라진 부분을 복원한다.폴더를 여러개 만들 필요도 없고, 코드의 저장과 불러오기가 명령어 한줄로 수행된다. 저장 하고 싶은 만큼 저장해도 실제 전체 코드를 저장하는 것이 아니기 때문에 용량이 크게 늘어나지도 않는다.
또한 그룹 프로젝트의 경우 한 사람이 A라는 기능을 개발하고, 다른 사람이 B라는 기능을 개발하는 경우, branch(나무가지)라는 개념을 도입하여 각각 기능을 branch에서 개발 후 master branch로 합칠 수 있게 한다.
또 내가 올리려는 파일이 누군가 편집한 내용과 충돌한다면, 서버에 업로드 할 때 경고 메시지가 발생한다. 누군가가 애써 편집한 내용을 덮어써버리는 실수는 이제 없을 것!
-GitHub
Github(깃헙)은 git 데이터를 온라인에 저장해 주는 사이트(https://github.com)이다.
백업이 기본 기능이지만 단순히 저장만 하는 것이 아니라 다른 유저들과 함께 코드를 공유하고 온라인으로 하나의 프로그램을 같이 제작하는 것도 가능하다. 많은 오픈소스 프로그램들이 github을 통해서 전세계 유저들에 의해 제작되고 있다.
출처
'🗂️git' 카테고리의 다른 글
[Git] 자주쓰는 command (0) | 2020.11.29 |
---|---|
[Git / Git Hub] Git 용어 재 정리 (0) | 2020.06.23 |
[Git / Git Hub] Branch (0) | 2020.06.21 |
[Git / Git Hub] Git 혼자 하기 편 (0) | 2020.06.21 |
[Git / Git Hub] Git의 기본 (0) | 2020.06.21 |