본문 바로가기
제품

Git

Giten

2005년 리눅스 커널의 공동개발을 위해 시작된 분산 버전 관리 시스템. 프로그램 소스 코드와 문서가 언제, 누구에 의해, 어떤 이유로 바뀌었는지 기록하고 여러 사람의 작업을 합치는 자유 소프트웨어. 리누스 토르발스가 초기 구조를 만들었으며, 같은 해 주니오 하마노가 유지관리를 이어받아 국제적인 기여자 공동체와 함께 발전시킨 도구.

개발의 계기는 리눅스 개발진이 사용하던 상용 도구 BitKeeper의 무료 이용 중단. 수많은 개발자가 서로 다른 기능을 동시에 수정하는 리눅스의 특성 때문에 빠른 처리, 효율적인 브랜치 작업, 중앙 서버에 종속되지 않는 구조가 주요 목표였음. 2005년 4월 첫 커밋 이후 같은 해 말 1.0이 나왔으며, 처음부터 완성된 서비스였던 것이 아니라 실제 커널 개발 과정에서 기능과 사용법을 다듬은 프로젝트.

분산 방식의 핵심은 각 개발자의 저장소가 단순한 최신 파일 사본을 넘어 변경 이력도 보관한다는 점. 일반적인 복제에서는 이력을 자신의 컴퓨터에 가져와 인터넷 연결 없이 기록을 살펴보거나 새로운 변경을 저장할 수 있음. 이후 다른 저장소와 필요한 변경사항을 주고받는 구조로, 중앙 서버를 반드시 거쳐야만 모든 작업을 할 수 있는 방식과 차이가 있음. 다만 큰 저장소를 위한 얕은 복제와 부분 복제는 가져오는 이력이나 파일 객체의 범위를 줄이는 별도 선택지.

변경 기록의 기본 단위는 커밋. 특정 시점의 파일 상태를 가리키고 앞선 기록과 연결되며 작성 정보와 설명을 함께 담는 단위임. 파일을 편집한 뒤 곧바로 모든 내용을 기록하는 대신, 다음 커밋에 넣을 변경만 고르는 준비 영역을 거쳐 작업을 나눌 수 있음. 이러한 구조는 수정의 의도를 검토하거나 문제가 생긴 시점을 좁혀 찾는 기반.

브랜치는 별도 기능이나 수정안을 독립적으로 진행하는 작업 흐름. 파일 전체를 매번 복사하는 개념이 아니라 특정 커밋을 가리키는 가벼운 참조로, 여러 실험을 병행하고 완성된 결과를 합치기 쉽게 한 설계. 서로 다른 변경이 같은 부분을 건드리면 충돌이 발생할 수 있으며, 이때 어느 내용을 남길지 판단하는 일은 개발자의 몫.

Git과 GitHub는 서로 다른 대상. Git은 변경 이력을 관리하는 소프트웨어이며, GitHub와 GitLab 등은 이를 바탕으로 원격 저장소, 코드 검토, 이슈 관리와 자동화 기능을 제공하는 플랫폼. Git은 특정 호스팅 업체의 계정 없이도 로컬 컴퓨터나 자체 서버에서 사용 가능하며, 상용 플랫폼의 이용 조건과 Git 본체의 라이선스도 별개.

Git 본체의 라이선스는 GNU 일반 공중 사용 허가서 버전 2인 GPLv2. 소스 코드를 검토하고 수정·재배포할 수 있는 자유 소프트웨어로, 2010년 소프트웨어 프리덤 컨서번시에 합류해 비영리 지원 기반을 마련함. 한 회사의 완제품을 수동적으로 사용하는 방식에 머물지 않고, 여러 조직의 개발자가 유지보수와 성능 개선에 참여하는 공동개발 구조.

소규모 개인 프로젝트부터 거대한 기업 코드베이스까지 사용 범위가 확대되면서 성능 개선도 지속됨. 필요한 파일만 내려받거나 작업 공간에 펼치는 기능, 이력 탐색을 빠르게 하는 보조 자료구조, 여러 작업 디렉터리의 공유, 파일 변경 감시 등이 그 사례. 대용량 영상이나 데이터 파일에는 원본을 별도로 저장하는 Git LFS 같은 확장을 사용하기도 함.

내용에서 계산한 해시값으로 객체를 식별하므로 파일과 기록의 일관성을 확인하기 쉬운 구조. 그러나 해시는 데이터 암호화나 작성자의 신원 보증과 같은 뜻이 아니며, 비밀번호나 비밀키를 저장해도 안전해지는 것은 아님. SHA-1의 약점에 대응하는 탐지 기능과 SHA-256 지원, 커밋 서명과 저장소 소유자 확인 등 서로 다른 층위의 보완이 이어진 배경.

널리 쓰이는 도구가 됐지만 사용법이 단순한 것만은 아니었음. 여러 역할을 하던 checkout을 switch와 restore로 나누거나, 초기 브랜치 이름을 설정하도록 하고, 특정 이력 수정 작업을 별도 명령으로 제공하는 등 이해와 실수를 줄이기 위한 변화가 지속됨. 새 기능의 실험 단계와 안정 단계, 호스팅 서비스별 지원 시점이 서로 다를 수 있는 점도 특징.

한국어를 포함한 여러 언어의 《Pro Git》 번역이 공개돼 비영어권 개발자의 학습을 지원함. 한국어 학습 자료를 통해 버전 관리의 기본 개념을 익히고 국제 오픈소스 프로젝트의 공동개발에 참여할 수 있도록 돕는 기반.

23 타임라인
29 관련 링크
Git

타임라인 23건 · 2005–2026

수록 이벤트 분포 점을 선택하면 해당 이벤트로 이동할 수 있습니다.
2005년 2026년
일자 유형 내용 관련 엔티티 출처·정밀도
연결 없음 15건
2014-05-28 release Git 2.0, 기본 전송 동작 변경 Git 2.0이 공개되며 별도 대상을 지정하지 않은 git push의 기본 동작이 matching에서 simple로 변경됨. 이름이 대응하는 여러 브랜치를 한꺼번에 전송할 수 있던 방식에서, 현재 작업 브랜치와 대응 관계를 확인하는 더 보수적인 방식으로 전환. 기존 사용 방식과의 호환성을 일부 바꾸더라도 의도하지 않은 변경 전송을 줄이려 한 주요 릴리스. 출처 22015-07-27 release Git 2.5, 여러 작업 디렉터리 지원 Git 2.5가 공개되며 git worktree 명령이 도입됨. 하나의 저장소 이력을 공유하면서 서로 다른 브랜치를 별도의 디렉터리에 펼쳐, 장시간 테스트와 수정 작업 등을 병행할 수 있게 한 기능. 저장소 전체를 여러 번 복제하는 부담을 줄이는 방식이며, 최초 도입 당시에는 오류와 인터페이스 변경 가능성이 있는 실험적 기능으로 안내됨. 출처 22018-05-18 milestone Git 통신 프로토콜 버전 2 발표 구글의 Git 개발팀이 저장소를 복제하고 변경사항을 가져오는 통신 방식의 새 버전을 발표함. 기존 방식은 필요한 브랜치가 하나뿐이어도 서버가 모든 브랜치와 태그 목록을 먼저 보내야 했으나, 새 방식은 필요한 참조를 선택해 요청할 수 있도록 설계됨. 대형 저장소의 불필요한 전송을 줄이고 이후 기능 확장을 쉽게 하려 한 개선으로, 발표 당시 Git 2.18 포함이 예정돼 있었음. 출처 12018-09-10 release Git 2.19, 변경 이력 비교와 대형 저장소 기능 확장 Git 2.19가 공개되며 작업 이력을 다시 정리하기 전후의 커밋 묶음을 비교하는 git range-diff가 제공됨. 이와 함께 필요한 파일 객체를 나중에 가져오는 부분 복제와 커밋 관계를 효율적으로 읽는 commit-graph 관련 개발이 진행됨. 부분 복제는 당시 다수의 공개 서버에서 아직 지원하지 않는 실험 단계였으므로, 모든 호스팅 서비스에서 즉시 이용 가능한 기능으로 볼 수는 없었음. 출처 12019-08-16 release Git 2.23, switch·restore 명령 도입 Git 2.23이 브랜치 이동을 위한 git switch와 파일 복원을 위한 git restore를 실험적으로 도입함. 여러 기능을 맡아 초보자가 혼동하기 쉬웠던 git checkout의 역할을 목적별 명령으로 나눈 변화. 기존 checkout을 곧바로 없앤 것은 아니며, 두 명령의 인터페이스는 도입 당시 변경 가능성이 있는 상태였음. 출처 12020-01-13 release Git 2.25, sparse-checkout 명령 도입 Git 2.25가 큰 저장소에서 필요한 디렉터리만 작업 공간에 펼치도록 돕는 git sparse-checkout 명령을 도입함. 설정 파일을 직접 고치던 과정을 명령으로 다룰 수 있게 하고, 디렉터리 중심의 cone mode로 처리 부담을 줄인 변화. 서버에서 받을 객체를 줄이는 부분 복제와 함께 사용할 수 있지만, 다운로드 범위를 줄이는 기능과 작업 폴더에 보일 파일을 고르는 기능은 서로 다름. 출처 12020-07-27 release Git 2.28, 초기 브랜치 이름 설정 지원 Git 2.28이 새 저장소의 첫 브랜치 이름을 사용자가 지정할 수 있는 init.defaultBranch 설정을 도입함. 조직과 프로젝트가 자신에게 맞는 기본 이름을 선택할 수 있게 한 변화. Git 자체가 이 릴리스에서 모든 기존 저장소의 master를 main으로 자동 변경한 것은 아니며, 호스팅 서비스의 기본 이름 변경 정책과도 구별 필요. 출처 12020-10-19 release Git 2.29, SHA-256 저장소 실험 지원 Git 2.29가 객체 식별에 기존 SHA-1 대신 SHA-256을 사용하는 저장소를 실험적으로 지원함. 해시 알고리즘의 취약성에 대비해 데이터 저장 형식을 발전시키기 위한 단계. 당시에는 SHA-1 저장소와 SHA-256 저장소 사이의 상호 운용이 지원되지 않았으며, 기존 저장소나 주요 호스팅 서비스가 일괄 전환된 것은 아니었음. 출처 12021-11-15 release Git 2.34, 대형 저장소 처리와 SSH 서명 지원 확대 Git 2.34가 필요한 부분만 다루는 sparse index 지원을 확장하고, SSH 키로 커밋과 태그 등에 서명하는 기능을 제공함. 대형 저장소 작업의 부담을 줄이는 한편 개발자가 기존 SSH 키를 변경 이력의 서명에도 활용할 수 있게 한 개선. 서명은 특정 키와 기록의 관계를 검증하는 수단이며, 코드 자체의 안전성이나 완성도를 자동 보증하는 기능은 아님. 출처 12022-04-12 milestone Git, 다른 사용자 저장소 설정을 통한 취약점 수정 Git 프로젝트가 다중 사용자 환경 등에서 악의적으로 배치된 저장소 설정을 읽을 수 있는 취약점에 대응하는 보안 업데이트를 공개함. 다른 사용자가 소유한 저장소의 설정과 후크를 무조건 신뢰하지 않도록 경계를 강화한 조치. 공유 컴퓨터나 Git for Windows 이용 환경에서 특히 주의가 필요했던 사례로, 저장소의 변경 이력 관리와 실행 환경의 신뢰 검증이 별도 문제임을 드러낸 사건. 출처 12022-06-27 release Git 2.37, 파일 변경 감시와 저장소 정리 개선 Git 2.37이 윈도와 macOS에서 파일 시스템 변경을 감시하는 내장 기능을 제공함. 작업 폴더 전체를 반복 확인하는 부담을 줄여 대형 저장소의 상태 조회를 빠르게 하려 한 개선. 더 이상 브랜치나 태그에서 도달하지 못하는 객체를 정리하는 cruft pack도 도입해, 유예 기간을 유지하면서 저장 공간을 효율적으로 관리하도록 함. 출처 12024-04-29 release Git 2.45, reftable 저장 형식 실험 지원 Git 2.45가 브랜치와 태그 같은 참조 정보를 저장하는 reftable 방식을 실제 저장소에서 실험할 수 있도록 지원함. 참조가 많은 저장소에서도 조회와 갱신을 효율적으로 처리하려는 변화. SHA-1과 SHA-256 객체 형식의 상호 운용을 위한 초기 지원도 포함됐으나, 모든 기존 저장소를 자동으로 새 형식으로 바꾸는 업데이트는 아니었음. 출처 12025-08-18 release Git 2.51, switch·restore 명령의 실험 단계 종료 Git 2.51에서 브랜치 전환용 switch와 파일 복원용 restore가 실험적 명령 지위를 벗어남. 2019년 도입 이후 다듬어진 인터페이스를 안정적인 명령으로 정착시킨 변화. 저장소 압축과 탐색 효율 개선, 임시 작업 내용을 다른 저장소로 전달하는 stash 교환 형식도 포함된 릴리스. 출처 12026-04-20 release Git 2.54, 이력 수정 명령과 설정 기반 후크 도입 Git 2.54가 특정 커밋의 설명을 고치거나 하나의 커밋을 나누는 git history 명령을 실험적으로 도입함. 작업 전후 자동 검사 등에 쓰는 후크를 설정 파일로 정의할 수 있게 하고 저장소 유지관리 방식도 개선함. history는 병합 커밋이 포함된 이력 등을 다루는 데 제약이 있으며, 기존 rebase의 모든 기능을 대체하는 완성형 명령으로 발표된 것은 아님. 출처 12026-09-28 release Git 2.56, 충돌 해결 확인과 대형 저장소 성능 개선 Git 2.56이 충돌이 발생했던 파일만 골라 해결 여부를 확인하고 반영하는 git add --resolved를 도입함. 충돌 표시가 남아 있으면 반영을 중단해 무관한 수정이나 미해결 내용을 함께 기록하는 실수를 줄이는 기능. 병합 기준이 되는 공통 조상 탐색과 서버 측 저장소 압축도 개선했으며, 실험적 history 명령에는 특정 커밋을 제거하는 기능을 추가함. 출처 1
주니오 하마노 2건
2005-07-26 milestone 주니오 하마노, Git 유지관리 인수 리누스 토르발스가 초기 개발에 크게 기여한 주니오 하마노에게 Git 프로젝트의 유지관리 책임을 넘김. 토르발스가 리눅스 커널 개발에 집중하고 하마노가 기여자의 변경사항을 검토·통합하며 릴리스를 이끄는 체제로 전환한 계기. 창시자의 단기간 개발에 머물지 않고 독립적인 장기 공동개발 프로젝트로 자리 잡은 전환점. 주니오 하마노, 리누스 토르발스 출처 12005-12-21 release Git 1.0 공개 주니오 하마노가 Git 1.0.0을 공개함. 리눅스 커널 개발에서는 이미 1.0 이전 버전을 사용하고 있었으며, 이번 릴리스는 복제·가져오기 기능과 문서, 오류 수정을 정리한 이정표. 따라서 Git이 처음 실무에 쓰인 날이나 모든 기능이 한꺼번에 완성된 날을 뜻하지는 않음. 주니오 하마노 출처 1
깃허브 2건
2008-04-10 release 깃허브 창업자들, 서비스를 공개 출시 깃허브가 비공개 베타 운영을 마치고 Git 저장소 호스팅 서비스를 공개 출시함. 커밋에 의견을 남기는 기능과 프로젝트 간 관계를 보여 주는 네트워크 그래프 등을 제공해 개발자의 코드 공유와 협업을 지원한 출발점. Git 자체와는 별개의 웹 서비스로, 분산 버전 관리 도구를 이용하는 개발자 생태계의 확장에 기여함. 깃허브, 톰 프레스턴워너+3 출처 32017-03-20 milestone 깃허브, SHA-1 충돌 공격 탐지 적용 GitHub가 저장소 데이터의 SHA-1 계산 과정에서 알려진 충돌 공격의 흔적을 탐지·거부하는 기능을 적용함. 서로 다른 데이터가 같은 해시값을 갖도록 만드는 공격에 대응해, 내용으로 객체를 식별하는 Git 생태계의 안전성을 강화한 조치. 당시 Git 저장소에서 실제 위조 공격이 성공했다고 발표한 사건이나 SHA-256으로의 전면 전환 완료를 뜻하지는 않음. 깃허브 출처 1
리눅스 1건
2005-04-07 milestone Git 최초 커밋 기록 리눅스 커널 개발에 사용하던 BitKeeper의 무료 이용이 중단된 뒤, 리누스 토르발스가 새로운 버전 관리 도구 Git의 첫 커밋을 기록함. 파일 내용과 디렉터리 구조, 변경 이력을 객체로 저장하는 핵심 구조를 마련한 출발점. 당시에는 오늘날의 git 명령과 편리한 사용자 인터페이스가 없었으며, 여러 저수준 명령을 조합해 작업하는 초기 단계였음. 리눅스, 리누스 토르발스 출처 3
소프트웨어 프리덤 컨서번시 1건
2010-12-16 milestone Git, 소프트웨어 프리덤 컨서번시에 합류 Git 프로젝트가 자유 소프트웨어를 지원하는 비영리단체 소프트웨어 프리덤 컨서번시의 회원 프로젝트로 합류함. 독립적인 기술 개발을 이어가면서 비영리 법인 지위와 행정·재정 지원을 활용할 기반을 마련한 변화. 특정 상용 호스팅 기업이 Git 자체를 소유하거나 개발 방향을 단독 결정하는 구조와는 구별되는 운영 기반. 소프트웨어 프리덤 컨서번시 출처 1
Git LFS 1건
2015-04-08 release Git LFS 공개 GitHub가 대용량 파일을 다루는 오픈소스 확장 Git LFS를 공개함. 저장소에는 큰 파일의 실제 내용 대신 작은 참조 정보를 넣고, 원본 데이터는 별도 저장소에서 전송하는 방식. 음원·영상·그래픽·데이터셋처럼 일반적인 소스 코드보다 큰 이진 파일을 Git 작업 과정에 포함하기 위한 보완책이며, Git 본체와 별도로 설치·운영되는 확장임. Git LFS, 깃허브 출처 1
마이크로소프트 1건
2017-05-24 release 마이크로소프트, 윈도 개발팀의 Git 전환 성과 공개 마이크로소프트가 윈도 개발팀에 대한 Git과 가상 파일 시스템 GVFS 도입을 대부분 마쳤다고 발표함. 약 350만 개 파일과 약 300GB 규모 저장소를 다루기 위해 필요한 파일을 효율적으로 제공하고 Git의 성능을 개선한 사례. 대형 상용 운영체제 개발에도 Git을 적용할 수 있음을 보여 준 전환으로, 윈도 소스 코드 전체를 오픈소스로 공개했다는 의미는 아님. 마이크로소프트, 마이크로소프트 윈도우 출처 1
갱신 2026-10-18