버전 관리 시스템 중 가장 많이 쓰이는 강력한 도구, Git은 협업의 기본이 되는 툴이다. 오픈 소스(Open Source : 소스 코드가 공개된 소프트웨어) 생태계에 기여할 수 있는 개발자가 되기 위한 첫 번째 단계라고 할 수 있다.
작업하던 파일을 편집 전 상태로 되돌리고 싶을 때 가장 간단한 방법은 편집하기 전에 파일을 미리 복사해 두는 것이다. 하지만 파일을 편집할 때마다 매번 손수 복사하는 일은 번거롭기도 하고 실수할 가능성도 많다. VSC와 같은 텍스트 에디터에서는 Ctrl + z(실행 취소, Undo)를 여러 번 눌러 이전 상태로 돌아갈 수 있다. 그러나 만약 코드를 수정한 뒤 에디터를 종료했다면, 다시 실행한 텍스트 에디터에서 이전 코드로 돌아갈 수 없다. 이런 경우를 위해서라도 이전에 작성한 내용을 보존해야 할 필요가 있다. 이 시스템이 바로, 버전 관리 시스템(Version Control System)이다.
버전 관리를 해야하는 이유
1. 위 그림처럼 하나하나 추가되는 기능들의 변경 이력을 저장해 둘 수 있다.
2. 다시 이전 버전으로 되돌아가야 하는 상황이 발생할 경우 이전의 변경 이력들이 기록되어 있으니 되돌아가는 것이 가능하다.
3. 변경 사항을 저장할 때는 어떤 사항이 변경되었는지 코멘트를 꼭 작성을 해야 하기 때문에 누가 어떤 파일을 추가, 수정, 삭제했는지도 확인이 가능하다.
4, 5. Git으로 관리되는 파일은 Github, GitLab, Bitbucket 등의 여러 가지 원격 저장소를 이용해서 백업과 협업을 할 수 있다.
Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’ 이다. 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능하다. 이렇게 특정 시점에 생성된 백업 복사본을 스냅샷이라고 하는데, 이렇게 하나하나 스냅샷을 만들어 주는 작업을 commit이라고 한다.
Github이란?
Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템이라면 Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스이다. 즉 Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있는 것이다. Github에서 Code Review 등을 통해 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 GitHub로부터 호스팅되고 있어서, 누구든 자유롭게 기여할 수 있다. 정리하자면 Github은 내 컴퓨터에서 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트이다.
유명 오픈소스들 공식 문서의 귀퉁이에 문어 모양 아이콘이나 Github이라는 링크가 바로 오픈 소스의 코드를 github에 공유한 링크이다. 오픈 소스(소스 코드가 공개된 소프트웨어)는 누구나 자유롭게 해당 기능을 추가하고 개선할 수 있다. 이 작업을 기여하다(contribute)라고 한다. React 같은 경우에도 이렇게 오픈 소스로 공유가 되어 있고 여기에 기여(contribute)를 할 수 있으며 어떤 수정사항이 있는지 commit 기록을 통해서 확인할 수 있고 변경된 코드도 볼 수 있다.
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 하는데 Git으로 관리되는 폴더를 Git repository 라고 한다. Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다. 작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다. 다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
페이스북에서 제공하는 React는 온라인상에 올라와 있는 오픈 소스이다. (Remote Repository에 소스 코드가 올라와 있다는 것) React 프로젝트에 contribute를 하기 위해서는 먼저 React 원격 저장소를 내 원격 저장소로 가지고 오는 작업이 필요하다. 그 과정을 Fork 라고 한다. Fork 를 하고나면 나의 Remote Repository에 React 코드를 옮겨온 상태이다. 이 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업이 또 필요한데, 그 과정을 Clone 이라고 한다. 내 컴퓨터에서 React 소스코드 변경 작업을 완료한 후에는 이 변경된 내용을 commit을 통해 저장해 준 뒤, Remote Repository에 반대로 올려주는 작업이 필요하다. 이 과정을 Push 라고 한다. Local Repository에 기록해 놓은 commit을 Remote Repository로 업로드할 수 있다. 이렇게 Push를 완료하고 나면 GitHub에는 Pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.
+ 반대로 Remote Repository에서 변경 사항이 있을 때 Local Repository 로 가져오는 Pull 작업도 가능하다.
이렇게 Github을 통해서 우리도 직접 페이스북 라이브러리의 소스 코드에 기여를 할 수 있다. 또 작업한 프로젝트들을 Github 계정에 올려 놓으면 개발자 구직을 할 때 포트폴리오로도 활용할 수가 있다.
A. fork: 오픈 소스 코드가 업로드 되어 있는 원격 저장소에서 나의 원격 저장소로 가지고 오는 과정
B. clone: 오픈 소스 코드를 원격 저장소에서 내 컴퓨터(Local Repository)로 가지고 오는 과정
C. push: 내 컴퓨터에서 변경한 사항을 원격 저장소에 반영하는 작업 (변경 내용을 commit을 통해 저장한 후, push를 통해 반영)
D. pull: 원격 저장소에서 변경 사항이 생겼을 때, 변경된 사항을 내 컴퓨터에 반영하는 작업
'FE > Git' 카테고리의 다른 글
[Git] local과 remote 환경에서 버전 관리하기 (0) | 2023.03.09 |
---|---|
Git 환경 설정 (0) | 2023.02.26 |