깃 (소프트웨어)

자유 소프트웨어 버전 관리 시스템
(기트에서 넘어옴)

(Git /ɡɪt/[5])은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템이다. 또는 이러한 명령어를 가리킨다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만[6] 어떠한 파일 집합의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것[7]이 특징이며 데이터 무결성,[8] 분산, 비선형 워크플로를 지원한다.[9]

원저자리누스 토르발스[1]
개발자주니오 하마노(Junio Hamano), 리누스 토르발스[2]
발표일2005년 4월 7일(18년 전)(2005-04-07)
안정화 버전
2.44.0[3] 위키데이터에서 편집하기 / 2024년 2월 23일
저장소
프로그래밍 언어C, , , Tcl, 파이썬[4]
운영 체제리눅스, POSIX, 윈도우, OS X
플랫폼IA-32, x86-64
언어영어
종류버전 관리
라이선스GNU 일반 공중 사용 허가서 v2
웹사이트git-scm.com 위키데이터에서 편집하기

깃은 2005년에 리눅스 커널 개발을 위해 초기 개발에 기여한 다른 커널 개발자들과 함께 2005년에 리누스 토르발스가 처음 개발한 것이다.[10] 2005년부터 지금까지 주니오 하마노(Junio Hamano)가 소프트웨어의 유지보수를 맡고 있다.

다른 대부분의 분산 버전 관리 시스템처럼, 또 대부분의 클라이언트-서버 시스템과 달리, 모든 노드의 모든 깃 디렉터리는 네트워크 접속이나 중앙 서버와는 독립적으로 동작하는 완전한 이력 및 완전한 버전 추적 등, 모든 기능을 갖춘 저장소이다.[11]

깃은 GNU 일반 공중 사용 허가서 v2 하에 배포되는 자유 소프트웨어이다.

역사 편집

리눅스 커널의 개발자들은 2002년부터 프로젝트를 관리하는 소스 관리 시스템(SCM)으로 비트키퍼를 사용해 왔었다. 비트키퍼의 저작권을 가지고 있던 래리 맥보이(Larry McVoy)는 앤드루 트리젤이 비트키퍼 프로토콜을 리버스 엔지니어링하여 소스풀러(SourcePuller)를 만들었다고 주장하면서, 비트키퍼의 자유 이용을 철회했다. 그에 따라 많은 개발자들이 비트키퍼의 이용을 포기하게 되면서 2005년 4월부터 깃 개발이 시작되었다.[12] (이 동일한 사건은 또한 머큐리얼이라는 다른 버전 관리 시스템이 만들어진 계기가 되기도 했다)

리누스 토르발스는 비트키퍼와 같은 분산 버전 관리 시스템을 원했으나 당시 사용 가능했던 자유소프트웨어 중 어느 것도 자신의 요구를 충족하지 못했다. 토르발스는 패치를 적용하고 모든 관련 메타데이터를 업데이트하는데 30초가 필요한 소스 관리 시스템의 예를 언급하면서, 동료 관리자들과의 동기화를 하려면 한 번에 이런 동작을 250번이나 수행해야 하는 리눅스 커널 관리에서는 적용할 수 없다고 하였다. 그는 패치 작업에 3초 이상 소요되면 안 된다고[7] 규정하였으며 3가지 사항을 더 추가하였다:

  • 무엇을 하지 "않을지"의 예로 CVS를 참고할 것. 의심이 되면 명확히 반대의 결정을 할 것[9]
  • 분산 방식의 비트키퍼같은 워크플로를 지원할 것[9]
  • 우연이든 악의적이든 변질에 대비한 매우 강력한 안전 기준을 포함할 것[8]

당시 존재했던 버전 관리 시스템 중에서 이런 기준을 만족하는 것은 없었고, 따라서 토르발스는 2.6.12-rc2 리눅스 커널 개발 릴리스 직후부터 자신이 직접 작성해 나가기 시작했다.[9]

깃의 개발은 2005년 4월 3일에 시작되었다.[13] 토르발스는 4월 6일 이 프로젝트를 발표했다.[14] 4월 7일 기준으로 자체 호스팅이 진행되었다.[13] 여러 브랜치의 최초 병합은 4월 18일 실시되었다.[15] 4월 29일, 초기의 깃은 벤치마크 수행 시 1초에 6.7개의 패치 속도로 리눅스 커널 트리에 패치를 기록하여, 토르발스는 그의 성능 목표를 달성하였다.[16] 6월 16일 깃은 커널 2.6.12 릴리스를 관리하였다.[17]

토르발스는 2005년 7월 26일 프로젝트의 주 기여자인 주니오 하마노에게 유지보수를 인계하였다.[18] 하마노는 2005년 12월 21일 1.0 릴리스를 맡았으며 프로젝트의 핵심 유지보수자로 남아있다.[19]

릴리스 편집

버전 원래 출시일 최신판 출시일
오래된 버전, 지원 중단: 0.99 2005-07-11 0.99.9n 2005-12-15
오래된 버전, 지원 중단: 1.0 2005-12-21 1.0.13 2006-01-27
오래된 버전, 지원 중단: 1.1 2006-01-08 1.1.6 2006-01-30
오래된 버전, 지원 중단: 1.2 2006-02-12 1.2.6 2006-04-08
오래된 버전, 지원 중단: 1.3 2006-04-18 1.3.3 2006-05-16
오래된 버전, 지원 중단: 1.4 2006-06-10 1.4.4.5 2008-07-16
오래된 버전, 지원 중단: 1.5 2007-02-14 1.5.6.6 2008-12-17
오래된 버전, 지원 중단: 1.6 2008-08-17 1.6.6.3 2010-12-15
오래된 버전, 지원 중단: 1.7 2010-02-13 1.7.12.4 2012-10-17
오래된 버전, 지원 중단: 1.8 2012-10-21 1.8.5.6 2014-12-17
오래된 버전, 지원 중단: 1.9 2014-02-14 1.9.5 2014-12-17
오래된 버전, 지원 중단: 2.0 2014-05-28 2.0.5 2014-12-17
오래된 버전, 지원 중단: 2.1 2014-08-16 2.1.4 2014-12-17
오래된 버전, 지원 중단: 2.2 2014-11-26 2.2.3 2015-09-04
오래된 버전, 지원 중단: 2.3 2015-02-05 2.3.10 2015-09-29
오래된 버전, 지원 중단: 2.4 2015-04-30 2.4.12 2017-05-05
오래된 버전, 지원 중단: 2.5 2015-07-27 2.5.6 2017-05-05
오래된 버전, 지원 중단: 2.6 2015-09-28 2.6.7 2017-05-05
오래된 버전, 지원 중단: 2.7 2015-10-04 2.7.6 2017-07-30
오래된 버전, 지원 중단: 2.8 2016-03-28 2.8.6 2017-07-30
오래된 버전, 지원 중단: 2.9 2016-06-13 2.9.5 2017-07-30
오래된 버전, 지원 중단: 2.10 2016-09-02 2.10.5 2017-09-22
오래된 버전, 지원 중단: 2.11 2016-11-29 2.11.4 2017-09-22
오래된 버전, 지원 중단: 2.12 2017-02-24 2.12.5 2017-09-22
오래된 버전, 지원 중단: 2.13 2017-05-10 2.13.7 2018-05-22
오래된 버전, 지원 중단: 2.14 2017-08-04 2.14.6 2019-12-07
오래된 버전, 지원 중단: 2.15 2017-10-30 2.15.4 2019-12-07
오래된 버전, 지원 중단: 2.16 2018-01-17 2.16.6 2019-12-07
오래된 버전, 지원 중: 2.17 2018-04-02 2.17.6 2021-03-09
오래된 버전, 지원 중: 2.18 2018-06-21 2.18.5 2021-03-09
오래된 버전, 지원 중: 2.19 2018-09-10 2.19.6 2021-03-09
오래된 버전, 지원 중: 2.20 2018-12-09 2.20.5 2021-03-09
오래된 버전, 지원 중: 2.21 2019-02-24 2.21.4 2021-03-09
오래된 버전, 지원 중: 2.22 2019-06-07 2.22.5 2021-03-09
오래된 버전, 지원 중: 2.23 2019-08-16 2.23.4 2021-03-09
오래된 버전, 지원 중: 2.24 2019-11-04 2.24.4 2021-03-09
오래된 버전, 지원 중: 2.25 2020-01-13 2.25.5 2021-03-09
오래된 버전, 지원 중: 2.26 2020-03-22 2.26.3 2021-03-09
오래된 버전, 지원 중: 2.27 2020-06-01 2.27.1 2021-03-09
오래된 버전, 지원 중: 2.28 2020-07-27 2.28.1 2021-03-09
오래된 버전, 지원 중: 2.29 2020-10-19 2.29.3 2021-03-09
오래된 버전, 지원 중: 2.30 2020-12-27 2.30.2 2021-03-09
오래된 버전, 지원 중: 2.31 2021-03-15 2.31.1 2021-04-02
오래된 버전, 지원 중: 2.32 2021-06-06 2.32.5 2023-01-17
오래된 버전, 지원 중: 2.33 2021-08-16 2.33.1 2021-10-12
오래된 버전, 지원 중: 2.34 2021-11-15 2.34.6 2023-01-17
오래된 버전, 지원 중: 2.35 2022-01-25 2.35.6 2023-01-17
오래된 버전, 지원 중: 2.36 2022-04-18 2.36.4 2023-01-17
오래된 버전, 지원 중: 2.37 2022-06-27 2.37.5 2023-01-17
오래된 버전, 지원 중: 2.38 2022-10-02 2.38.3 2023-01-17
오래된 버전, 지원 중: 2.39 2022-12-12 2.39.1 2023-01-17
현재 안정화 버전: 2.40 2023-03-14 2.40.0 2023-03-14
범례:
오래된 버전
오래된 버전, 지원 중
최신 버전
최신 미리보기 버전
배포 예정

GUI 편집

깃은 많은 GUI를 지원하는 것이 특징이다. 현재 소스트리, GitHub Desktop 등의 여러 GUI를 사용할 수 있다.

웹 인터페이스 편집

 
commit diff를 보여주는 깃웹 인터페이스의 스크린샷.

깃을 위한 다양한 웹 인터페이스를 사용할 수 있다.

  • Cgit: C로 작성된 깃 저장소용 웹 프론트엔드.
  • Gitweb: 로 작성된 깃 프론트엔드.
  • Gogs: 인증, 이슈 핸들링, 포크 등의 수많은 기능이 포함된 깃 프론트엔드. Go로 작성됨.
  • Gitea: Gogs의 포크.
  • Gitlist: Php로 작성된 부트스트랩 프레임워크를 사용하는 깃 저장소 뷰어.

터미널 인터페이스 편집

명령 프롬프트를 갖는 터미널 인터페이스는 또는 콘솔 인터페이스는 GUI 버전이나 웹 인터페이스와 함께 깃 서버에 접속하는 깃 클라이언트 들이다. GNU nanoVim 같은 편집기를 포함한다. 콘솔은 윈도우 터미널이나 형태의 Bash를 사용한다. 보안을 위해 OpenSSL 이나 윈도우즈 보안 채널 라이브러리(The native Windows Secure Channel library)를 사용한다. Git Bash의 경우 MinTTY를 기본으로 터미널 에뮬레이터로 사용한다.[20][21][22]

설치 예 편집

Linux 설치[23]

> sudo [dnf(RPM계열) 또는 apt(deb계열)] install git-all

설치 확인

> git --version

도움말 보기

> git help

사용 예 편집

타겟(target) 소프트웨어 빌드용 다운로드 명령어

> git clone [주소]

파일 수정후 커밋 (필수사항)

> git commit [파일명]

수정 파일 업로드(리모트 업로드시 사전 로컬 commit 필수)

> git push

주요 기본 명령어 편집

명령어 실행 비고
git branch 현재 브랜치 이름
git pull git fetch + git merge git diff 생략
git log commit list (history) 종료(나가기) q
git show 최근 커밋 정보 git show [로그 일련번호]

같이 보기 편집

각주 편집

  1. “Initial revision of "git", the information manager from hell”. Github. 8 April 2005. 16 November 2015에 원본 문서에서 보존된 문서. 20 December 2015에 확인함. 
  2. “Commit Graph”. Github. 8 June 2016. 20 January 2016에 원본 문서에서 보존된 문서. 19 December 2015에 확인함. 
  3. “[ANNOUNCE] Git v2.44.0”. 2024년 2월 23일. 2024년 2월 24일에 확인함. 
  4. “Git Source Code Mirror”. 8 February 2017에 원본 문서에서 보존된 문서. 1 January 2017에 확인함. 
  5. https://github.com/
  6. Scopatz, Anthony; Huff, Kathryn D. (2015). 《Effective Computation in Physics》. O'Reilly Media, Inc. 351쪽. ISBN 9781491901595. 7 May 2016에 원본 문서에서 보존된 문서. 20 April 2016에 확인함. 
  7. Torvalds, Linus (2005년 4월 7일). “Re: Kernel SCM saga..”. 《linux-kernel》 (메일링 리스트).  "So I'm writing some scripts to try to track things a whole lot faster."
  8. Torvalds, Linus (2007년 6월 10일). “Re: fatal: serious inflate inconsistency”. 《git》 (메일링 리스트). 
  9. Linus Torvalds ( 3 May 2007). 《Google tech talk: Linus Torvalds on git》. 02:30에 발생. 28 May 2007에 원본 문서에서 보존된 문서. 16 May 2007에 확인함. 
  10. 〈A Short History of Git〉. 《Pro Git》 2판. Apress. 2014. 25 December 2015에 원본 문서에서 보존된 문서. 26 December 2015에 확인함. 
  11. Chacon, Scott (24 December 2014). 《Pro Git》 2판. New York, NY: Apress. 29–30쪽. ISBN 978-1-4842-0077-3. 25 December 2015에 원본 문서에서 보존된 문서. 
  12. “BitKeeper and Linux: The end of the road? |linux.com”. 2017년 6월 8일에 원본 문서에서 보존된 문서. 2017년 5월 19일에 확인함. 
  13. Torvalds, Linus (2007년 2월 27일). “Re: Trivia: When did git self-host?”. 《git》 (메일링 리스트). 
  14. Torvalds, Linus (2005년 4월 6일). “Kernel SCM saga..”. 《linux-kernel》 (메일링 리스트). 
  15. Torvalds, Linus (2005년 4월 17일). “First ever real kernel git merge!”. 《git》 (메일링 리스트). 
  16. Mackall, Matt (2005년 4월 29일). “Mercurial 0.4b vs git patchbomb benchmark”. 《git》 (메일링 리스트). 
  17. Torvalds, Linus (2005년 6월 17일). “Linux 2.6.12”. 《git-commits-head》 (메일링 리스트). 
  18. Torvalds, Linus (2005년 7월 27일). “Meet the new maintainer...”. 《git》 (메일링 리스트). 
  19. Hamano, Junio C. (2005년 12월 21일). “Announce: Git 1.0.0”. 《git》 (메일링 리스트). 
  20. git-The simple guide
  21. https://git-scm.com/
  22. 완전초보를위한깃허브 Archived 2018년 5월 27일 - 웨이백 머신
  23. [참고](Reference Manual -Git ,Pro Git book -written by Scott Chacon and Ben Straub and published by Apress, Creative Commons Attribution Non Commercial Share Alike 3.0 license. Free Online and Print versions-Amazon.com)https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0

외부 링크 편집