GIT의 3대 목적
- 버전관리
- 백업
- 협업
그리고 이 3가지의 목적은 순서가있다.
앞의 것을 이해하지 못하면 뒤의 것을 이해하지 못한다.
앞의 것은 그것만으로 할 수 있는 일이 많다.
하지만 뒤의 것은 앞의 것에 의존하고 있는 기능이다
앞의 것일수록 쉽고 뒤로 갈수록 기하급수적으로 어려워진다
따라서 앞에서 오래 머물수록 좋다.
버전관리
우리가 만약 hello.txt 라는 파일에 천줄짜리 텍스트가 있다고 해보자.
그리고 다음날 새로운 천줄짜리 작업을 해야하지만, 전으로 돌아갈수도 있어야 한다고 생각해보자.
그러면 우리는 보통 hello.txt를 다른이름으로 저장을 하여 hello2.txt를 생성할 것이다.
마찬가지로 그 다음날 또 작업을 해야한다면 우리는 천줄을 또 추가하고 hello3.txt를 만들것이다.
그런데 hello3.txt를 만들때 했던 작업이 필요가 없어지면 우리는 그것을 지울것이다.
한 작업마다 천줄, 혹은 복잡하고 많은 내용을 천번 반복했다고 해보자.
그러면 우리는 hello1000.txt까지 만들고, 그 중간에 필요없는 작업은 지우게 됬을것이다.
하지만 우리는 제목만 보고는 그날에 어떤 작업을 했는지, 중요한 정보가 무엇인지 알 수가 없다.
그래서 우리는 각각의 변화마다 정확한 설명을 적고싶을것이다.
그리고 언제 수정했는지도 기록하고 싶을것이다.
이러한 것을 이룰수 있게 해주는 도구가 GIT과 같은 버전 관리 도구이다.
백업
우리의 컴퓨터는 확실한것과 불확실한것이 있다.
확실한것은 "우리의 컴퓨터는 고장날것이다." 이고,
불확실한것은 "언제 고장날지 모른다."이다.
따라서 자신의 컴퓨터에만 파일을 보관한다는 것은 언제가는 그 파일이 유실 될 것이라는 것을 확실할 수 있다.
그래서 우리는 그 파일을 백업해야한다.
백업을 하는 방법으로는 우리가 컴퓨터를 한대 사서 그곳에다가 백업하는 방법이있다.
또다른 방법으로는 백업을 제공하는 사업자들에게 돈을 주거나 해서 백업하는 방법이있다.
이러한 대표적인 서비스가 github.com 이다.
내가 Local Repository, 즉 나의 컴퓨터에 있는 저장소에 작업물을 저장해놨다고 해보자.
이때 이 사용자 이름을 my1이라고 설정해놨다 해보자.
그러면 우리는 이것을 Remote Repository, 즉 원격 저장소(github)에 push를 하게되면 원격 저장소에 똑같은 것이
생기게 된다.
그런데 우리가 컴퓨터를 바꾸거나 혹은 다른 컴퓨터로 접속해서 원격 저장소에서 코드를 당겨온다하자.
우리는 이것을 pull 이라고 부른다.
이때 사용자 이름을 my2라고 설정해놨다 해보자.
my2에서 원격저장소에 있는 소스를 당겨와서 작업한뒤 push를 하면 원격저장소에 작업물과 똑같은 코드가 생길것이다.
그러면 my1에서 또 작업을 할때는 원격저장소에서 다운로드를 하고 작업을 하면된다.
이것이 '백업'이라고 하는것이고, 이 주제는 자연스럽게 '협업'으로 넘어가는 징검다리가 된다.
협업
백업을 하면 협업은 그냥 되는것과 다름없다.
이미 다 준비가 됐기 때문이다.
만약 내 집에 있는 컴퓨터에서 회사 사람들과 공통된 파일을 작업한다고 해보자.
그러면 우리는 원격 저장소에서 파일을 당겨와서(pull) 로컬 저장소에 저장한뒤 작업하고 원격 저장소에 업로드(push)
할 것이다.
그러면 회사내의 어떤 다른사람은 원격 저장소에 다른 사람이 작업해서 업데이트된 코드를 당겨와서(pull)
자신의 로컬 저장소에 저장하고 작업한뒤 push 할 것이다.
이렇게 '협업'이 일어나게 되는것이다.
그런데 만약에 두 사람이 같은 파일을 수정했으면 어떻게 될까?
또 두 사람이 같은 파일에 같은 행을 수정했으면 또 어떻게 될까?
바로 이러한 상황에서 자동으로 합쳐주고,
같은 파일을, 또 같은 행을 수정했을때는 나중에 업로드 하는 사람에게 알아서 처리하라고 교통정리를 해주는것이
GIT이 해주는 협업 기능이다.
'Git' 카테고리의 다른 글
GIT CLI - 협업 (0) | 2022.02.01 |
---|---|
GIT CLI - Backup (0) | 2022.01.27 |
GIT CLI - Branch & Conflict (0) | 2022.01.23 |
Git CLI - 버전관리 (0) | 2022.01.21 |