Git이란 '분산 버전 관리 시스템'으로 여러 컴퓨터 파일의 현재와 과거를 관리할 수 있는 유용한 도구입니다.
#Git의 필요성
프로젝트를 진행하다 보면 파일의 관리가 중요해집니다.
파일들의 공유, 그리고 공통된 파일의 수정 및 다른 방향으로의 진행 등이 파일 관리라 할 수 있겠습니다.
예를 들어,
본인과 팀원이 한 개의 파일에 대해서 동시에 편집하는 작업을 진행했습니다.
이 파일에 대해서 서로 동일한 부분도 있겠지만 다른 부분도 있을 것입니다. 즉, 충돌하는 부분이 있을 겁니다.
이러한 때에 파일의 변경 사항을 비교하고, 하나의 파일로 합치기 전 수정하도록 유도해주는 유용한 도구가 있다면 어떨까요?
이러한 파일의 공유와 관리를 쉽게 해주는 것에 Git의 필요성이 있습니다.
꼭 프로그래머 분들 뿐만 아니라 대표적으로 디자인을 업으로 하시는 분들 또한 여러 레이어로 이루어진 프로젝트를 깃을 이용해 작업하시면 프로그래머분들과 같은 이점을 보실 수 있을 거라 생각합니다. 그 외의 업에서도 본인이 파일을 공유하며, 자주 변경사항이 발생하고 이를 통합하여 관리를 하고자 하신다면 깃이 필요할 것이라 생각합니다.
#Git으로 하는 일
1. 깃은 사용자가 꼭 중앙 서버에 접속하지 않더라도 코드를 작성 및 수정할 수 있게 합니다.
2. 파일에 변화를 발생시키면 그 변화를 기록합니다. 또한 변경 사항을 서버의 저장소에 존재하는 파일에 업데이트합니다.
깃은 가장 최근에 변경된 사항들을 이용해 최신의 상태만 유지하는 것이 아니라, 파일을 저장소에 올린 시점부터 작업을 하면서 변경된 사항들을 모두 누적해서 기록하여 보관합니다. 따라서 깃을 이용하면 작업을 진행하다 과거에 어떤 변경사항이 있었는지 확인할 필요가 생기면 특점 시점으로 돌아가 파일을 확인할 수 있는 것입니다.
또한 이를 통해서 여러 사람이 하나의 프로젝트를 공동 개발하면서 문제가 발생한 경우 어떤 코드에서 문제가 발생했고, 이 소스코드는 언제 누가 작성했는지를 파악할 수 있습니다. 해당 코드의 작성자는 수정을 하고 문제의 원인 조치를 문서화하여 추후 문제를 예방시키며 프로젝트를 긍정적인 방향으로 이끌 수 있게 됩니다.
#Git을 사용하기 위한 몇 가지 개념
1. 저장소 (Repository)
저장소는 파일과 폴더를 저장해두는 공간입니다. 또 저장소는 '로컬 저장소'와 '원격 저장소'로 나뉩니다.
- 로컬 저장소(Local Repository) : Git을 사용하는 사용자의 PC에 파일이 저장되는 개인용 저장소입니다.
- 원격 저장소(Remote Repository) : 서버에 있는 저장소로 여러 사람이 함께 공유하기 위해서 사용되며, 대부분 해당 작업의 결과를 저장시키게 됩니다.
2. 커밋 (Commit)
파일과 폴더의 추가/변경 사항을 저장소(로컬 저장소)에 저장하는 작업입니다. 커밋을 행하면 직전 커밋 상태부터 현재 커밋 상태의 변경 사항이 담긴 커밋이 만들어집니다. 커밋을 할 때마다 영문과 숫자로 이루어진 40자의 커밋 메시지를 남기는데, 저장소는 이를 통해 커밋을 구분 짓습니다.
3. 푸시 (Push)
로컬 저장소에 커밋한 파일을 원격 저장소에 업로드하여 공유하는 작업입니다. 푸시를 진행하면 원격 저장소에 변경된 파일이 업로드되고 원격 저장소와 로컬 저장소의 상태가 동일하게 됩니다.
4. 클론 (Clone)
원격 저장소를 복제하는 작업입니다. 복제 작업을 수행하면 원격 저장소의 내용을 통째로(최신 소스파일 및 변경이력) 받는 것을 말합니다. 복제한 저장소를 다른 PC에서 로컬 저장소로 사용할 수 있습니다.
5. 풀 (Pull)
원격 저장소에서 로컬 저장소로 업데이트하는 작업입니다. 풀 작업을 진행하면 원격 저장소에서 최신 변경 이력을 로컬 저장소로 다운로드하여 내 로컬 저장소에 그 내용을 적용합니다.
6. 브랜치 (Branch)
소프트웨어 개발 시 동일한 소스코드 위에서 새로운 기능 추가, 오류 수정 등을 진행합니다. 이러한 과정에서 다른 버전의 코드들이 만들어집니다. 이 동시다발적인 작업을 가능하게 하는 것이 브랜치입니다. 각자의 독립된 저장소에서 소스코드를 작성하고 추후에 원래의 버전과 비교하고 통합(Merge)하여 새로운 버전을 만들어 냅니다. 이때 개별적으로 작성이 이루어진 것이 '브랜치(Branch)', 통합이 되어 최신의 상태를 유지하고 있는 것이 '마스터 브랜치(Master Branch)'가 됩니다.
# Git을 제공하는 서비스들
1. GitHub https://github.com/
2. Bitbucket https://bitbucket.org/
3. GitLab https://about.gitlab.com/
깃을 제공하는 대표적인 서비스는 위와 같이 3가지가 있습니다. 저도 사용 경험이 그나마 있는 것은 깃허브입니다. 깃 랩도 잠시나마 사용해봤었는데, 깃허브에 익숙해지신다면 금방 사용하실 것으로 생각됩니다.
Bitbucket의 경우, 저는 사용 경험도 없고 제 주변 지인 들도 사용하고 있는 것을 본 적이 없어 뭐라 말씀은 못 드릴 것 같습니다.
추후에 위의 3가지 서비스의 어떤 점이 다른지 조사해보고 정리하겠습니다.
다음 글에선 깃허브 사용 숙지를 위한 설명을 작성해보고자 합니다.
# 참고 자료
- 위키백과 - 분산 버전 관리 https://ko.wikipedia.org/wiki/%EB%B6%84%EC%82%B0_%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
- 깃 공식 문서 https://git-scm.com/book
- backlog - Git 입문
https://backlog.com/git-tutorial/kr/intro/intro1_1.html
- 탁이 로그 - 왕초보를 위한 깃허브 사용법(Git사용법) https://tagilog.tistory.com/377
# 작성 록
2020/02/24
Git을 조금씩 사용하고 있지만 아직 개념이 부족하여 공부하면서 최대한 정확하게 담아보고자 글을 작성했습니다. 아직 부족한 것이 많고 잘못된 것은 수정해 나가겠습니다. 감사합니다.
'[Useful tech] > [GIT]' 카테고리의 다른 글
Git - 원하는 시점으로 프로젝트 되돌리기 (0) | 2020.05.07 |
---|---|
GitHub - 보안성 취약 해결 및 gitignore (0) | 2020.03.31 |
GitHub - Branch 생성 및 관리 (0) | 2020.03.03 |
GitHub - GitHub Desktop 설치 및 알아보기 (0) | 2020.02.27 |
GitHub - 계정 및 저장소 생성 (0) | 2020.02.26 |