The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Programming/Git

Git과 Github에 대해서 간단히 핵심을 짚어보자

Millie 2021. 10. 8. 21:08
Git과 Github를 사용하고 있지만, 좀 더 제대로 알고 싶은 마음에 영상을 찾아보던 중 '얄팍한 코딩사전'이라는 유튜브 채널에서 만든 'Git은 뭐고, Github는 뭔가요?' 라는 영상을 발견했다. 단 5분의 길이에 아주 쉽게 핵심을 잘 집어냈다. 이 영상을 보고 정리하면서 Git, Github의 핵심과 필요성을 복습하였다.

 

Git

Git의 공식 홈페이지에는 Git이 이렇게 설명되어 있다.

 

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

분산된, 그리고 속도와 효율에 관해서도 알아야 하지만, 우선 여기서는 "버전 컨트롤 시스템"이라는 것에 좀 더 초점을 맞춰 보자.

 

Git의 필요성 1. Version Control

What is “version control”, and why should you care?

Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.

소프트웨어, 앱 같은 것은 한번에 완벽하게 만들어지지 않는다.

개발 과정에서 계속해서 기능을 더하고, 빼고, 수정을 하게 된다.

그래서 중간중간에 저장을 해 놓고 변화를 기록해야 한다.

 

  • 과거의 기능을 복원하고 싶을 때
  • 실수로 잘못된 코드가 들어갔을 때 과거로 복원
  • 과거와 현재의 코드를 비교하기 위해서 과거 내역을 확인
  • 어플의 다양한 버전들을 기록해 놓고, 출시할 때 선택할 수도 있음

 

Git의 필요성 2. 협업

협업할 때는 어떤 폴더의 일부를 각각 맡아서 진행하게 된다.

소프트웨어 프로젝트에서는 폴더가 통째로 있어야 테스트도 해 볼 수 있다.

이메일, 클라우드로 하기는 어렵다. 누가 무슨 실수를 했는지도 알기 어렵다. 버전별 백업은 또 어떻게 할 것인가? 그래서 Git 같은 버전 관리 툴이 있기 전까지 개발자들은 힘들었다. 참고로 Git은 2005년생이다.

 

Git Commands

웹, 앱, 게임 등 소프트웨어를 만들기 시작하면, 파일들을 담기 위한 프로젝트 폴더가 있다.

git init

이 폴더에서 git을 시작하면, 이 폴더의 모든 수정 내역들이 저장되는 .git이라는 공간이 숨김 폴더로 생성된다.

git commit -m "작업수행 내용"

이 시점까지는 이러한 작업을 진행했다라고 기록하는 것

프로젝트에 의미 있는 변화가 생길 때마다 마치 사진을 찍듯이 보관됨

전체가 모두 복사되는 게 아니라, 각 버전의 변경 사항들만 기록되는 거라서 여러 번 커밋해도 용량이 그리 크게 차지되지 않는다.

git log

지금까지의 커밋 내역들을 확인한다.

git reset —hard 3r8da0

프로젝트를 과거로 돌려야 할 때 이렇게 쓰면 과거의 상태로 복원된다.

수정된 내역들은 복원되고, 새로 만든 파일들은 삭제되고, 지웠던 파일들은 복구된다.

git branch "브랜치명"

이름 그대로 가지치기, 분기를 하는 것.

새로운 기능을 넣을지 말지 고민되는 애매한 상황에 쓰기 좋다.

 

 

GIT Branch and its Operations. - An Easy Understanding - Digital Varys

This is the Article about what is GIT Branch and its Operations along with various commands and discussion on the useage of it.

digitalvarys.com

 

위 사이트에서는 Git의 branch를 더욱 자세히 설명하고 있다. 일부분을 인용해보면 이렇다.

 

We can say branches in GIT is like a logical pointer of all the set of changes that you have made in the code base. In easy words, GIT branch is the local copy of the main codebase which will have the changes of the new feature or bug fix, which will later be merged with the main codebase once after verified.

  • branch를 마치 code base에서 수행한 모든 변경 사항의 논리적 포인터와 같다고도 볼 수 있다.
  • 새로운 기능, 버그 수정 같은 변경을 포함하는 메인 code base의 로컬 복사본이다.
  • 나중에 검증 후, 메인 코드와 병합될 것이다.

 

git merge "브랜치명"

주가 되는 부분은 main branch에서 작업하고, 시도를 해 볼 부분은 다른 branch에서 작업하다가 적용해도 괜찮다 싶으면 메인 브랜치에 합쳐버리면 된다.

 

버전 관리 시스템은 정말 다양하다 - Mecurial, CVS, Bazaar, Subversion, Helix Core 등 하지만 가장 많이 사용되고, 대세는 Git.
Git을 실무에서 사용할 수 있을 만큼 자유자재로 쓸려면 수련이 필요하다. 이것을 연습해 볼 수 있는 튜토리얼, 사이트에서 연습하기.

 

Github

Github의 필요성 1. 인터넷상의 저장소

  • Git은 버전 관리를 위한 [소프트웨어]고, Github는 Git으로 저장되어서 원격 전송된 내역들이 저장되는 공간을 제공하는 [서비스]이다.
  • Git이 영상을 찍는 어플이라면, Github는 유튜브

 

Github의 필요성 2. Open source

  • 단순히 내 코드를 백업하는 것을 넘어서서 전 세계의 무수한 오픈소스 프로젝트들이 공유된다.
  • 수많은 다양한 사람들에 의해서 발전하는 공간.
  • 모두가 그 코드를 볼 수 있으니 잘못된 기능을 수정하거나 더 좋은 기능을 구현하는 코드들을 지구 반대편에 있는 뛰어난 프로그래머에게 제안받을 수도 있게 된다.
  • 내가 다른 누군가의, 다른 회사의 프로젝트에 기여할 수도 있게 된다.
  • 유명한 오픈소스 프로젝트에 내 코드가 기여된 기록이 있으면 취업할 때 강력한 플러스 요인이 될 수 있다.