타오름
조각보
타오름
전체 방문자
오늘
어제
  • 조각보
    • DEVELOPER B 🌱
      • Programming
      • Java
      • Spring | SpringBoot
      • JPA
      • Database
      • DS | Algorithms
      • CS
      • Git | Github
      • IDE

블로그 메뉴

  • HOME
  • TAG
         
        

CALENDAR

        
«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
    

티스토리

hELLO · Designed By 정상우.
타오름

조각보

[Git] Git이란? (feat. Git과 Github의 차이)
DEVELOPER B 🌱/Git | Github

[Git] Git이란? (feat. Git과 Github의 차이)

2021. 10. 5. 00:05

 

 

 

1. 깃(Git)이란? 

 

 

  •  형상 관리 도구(Configuration Management Tool)이면서 분산 버전 관리 시스템(Distributed Vesrion Control System, DVCS)의 한 종류.

  • 쉽게 말하면, 프로그램의 소스 및 파일의 변경 사항을 추적하면서 관리하며(→ 형상 관리 도구) 동시에 프로그램의 소스 및 파일을 여러 곳(개발에 참여하는 PC, 저장소 등)에 분산해서 저장해 관리하는 툴로, 프로그램의 버전 관리 및 협업에 편리함을 제공해준다.

  • 한마디로 깃이란 프로그램 소스 및 파일의 이력을 분산으로 관리하는 툴로 프로그램의 버전 관리 및 협업에 이용된다.

 

 

 

 

2. 깃(GIT)은 왜 필요할까? 

 

 

  • (상황1)
    오랜만에 뜯어본 코드에서 내가 개발했던 기능의 코드가 어느 순간 수정이 되어있었다. 
    →  누가 언제 어떤 이유로 코들 수정했는지에 관한 메모 또는 주석이 남아있지 않았다.
    →  심지어 오래된 코드라 내가 짠게 이 코든지 저 코든지 모르겠다.

    이때, 깃이 없으면? 
    ⇒ 누가 언제 어떤 코드를 수정했는지 모르는 채로 넘어가게 된다. 😥


  • (상황 2)
    우여곡절 끝에 댓글 기능을 모두 개발하였다. 댓글에는 프로필 사진과 첨부 파일 업로드 기능이 포함되어 있다.
    →  고객사측에서 유저들의 프사 대신 유저의 등급 이미지를 표시해달라고 수정을 요청해 프사를 지우고 등급을 표시했다.
    →  고객사측에서 첨부 파일에서 미리보기 기능을 빼달라고 해 기존의 미리보기 기능을 삭제했다.
    →  고객사측에서 회의를 거쳐 가장 처음의 모습이 낫다는 결론이 나와 가장 처음의 모습으로 바꿔달라 요청했다.

    이때, 깃이 없으면?

    ⇒ 프로필 사진 기능과 첨부 파일 미리 보기 기능을 다시 짜야된다.😥


  • (상황 3)
    동기와 내가 같은 페이지 내에서 다른 기능을 맡아 개발을 시작했다. 나는 댓글 기능을 동기는 상세 페이지 기능을 맡았다.
    →  둘이 동시에 기존 소스 파일을 내려받아 작업을 진행했다.
    →  내가 댓글 기능을 완성해 소스 파일을 업로드했다.
    →  내가 업로드 한 것을 모르는 동기가 자신의 파일을 업로드 했다. 

    이때, 깃이 없으면?
    ⇒ 번거롭게 계속해서 최신 소스인지 확인해 소스를 업데이트 해야하며, 누락되거나 충돌나는 소스들도 생겨난다. 😥

 

예시를 통해서 본 깃은 아래와 같은 이유로 필요합니다. 

1. 소스의 작성, 수정, 삭제 이력을 확인하여 내 소스 코드의 버전을 관리 할 수 있으며,  (버전 관리)

 

2. 자료가 유실되어 처음이나 위의 상황과 같이 특정 시점으로 백업이 가능해지며, (백업 기능)

 

3. 여럿이서 동시에 프로그램에 코드에 접근해 작업 할 수 있다. (협업) 

 

 

 

3. 깃(Git)의 장점

 

 

  • 깃은 모든 변경 사항에 대한 '스냅샷'을 찍어 저장하기 때문에 어떤 데이터도 누락없이 소스 코드를 관리 할 수 있다.

  • 깃은 분산 버전 관리 시스템으로, 인터넷 연결이 되지 않는 곳에서도 개발을 진행할 수 있으며 중앙 저장소가 삭제되어도 원상 복구 가능하다.

  • 깃은 개발자 스스로의 commit history를 가지며 저장소 역시 독립적으로 관리가 가능하기 때문에, commit에 오류가 존재하더라도 서버에 바로 영향이 끼치지 않는다. 개발자가 원하는 순간에 서버에 변경 내역을 보낼 수 있기 때문에 유연한 방식으로 코드를 관리 할 수 있다. 

  • 브랜치를 통해 분기하고 후에 본 프로그램에 합치는 방식으로 한 기능을 독립적으로 실험 또는 시험이 가능하다.

  • 깃은 자동적으로 변경 사항을 병합해주기 때문에 여러 개발자들이 소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.  

  • 프로그램이나 패치를 배포하는 과정도 간단해진다. 

 

 

 

 

4. 깃헙(Github)이란? 

 

 

  • 분산 버전 관리 시스템인 깃을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스
  • 쉽게 말해 깃은 버전 관리를 위한 소프트웨어이며, 깃헙은 깃을 통해 원격 전송되는 파일들을 저장하는 저장소를 제공하는 서비스이다. 
  • 깃헙은 저장소 관리 기능 뿐만 아니라 위키, 이슈 관리, 머지 요청 관리, 팀원 관리 등 전반적인 프로젝트 관리 기능도 함께 제공한다.

  • 이와 같은 서비스로는 Gitlab, Bitbucket 등이 있다. 그 중 Github이 가장 많이 이용되며 Gitlab은 기업체에서 인트라넷에 설치하여 많이 사용한다. 

  • 깃헙에 public으로 올라온 코드들은 누구나 다 다운받아 이용할 수 있기 때문에 깃헙은 단순히 코드들을 백업하고 관리하는 것을 넘어서 오픈소스 공유 플랫폼의 역할을 한다. 
     

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
    타오름
    타오름

    티스토리툴바