최근에 "git sparse-checkout" 명령어를 살펴보면서 git version을 좀 따져보았었다.
- https://www.whatwant.com/entry/sparse-checkout-size
"떡 본 김에 제사지낸다"고,
이번 기회에 Git 최신 버전을 사용하기 위한 방법을 살펴보도록 하겠다.
[ Environment ]
릴리즈된지 좀 오래되긴 했지만,
실무에서 주력으로 사용되는 Ubuntu 20.04 버전을 기준으로 하겠다.
(설마 우리 회사에서만? ^^)
❯ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal ❯ uname -a Linux chani22-VBox 5.15.0-76-generic #83~20.04.1-Ubuntu SMP Wed Jun 21 20:23:31 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
[ Default ]
Ubuntu 20.04 설치 후에 "git" 설치는 손쉽게 가능하다.
버전까지 바로 확인해보자.
❯ sudo apt install git ❯ git --version git version 2.25.1 |
[ Check ]
그러면, 지금 현재 git 최신 버전은 어떻게 될까?
공식 홈페이지에서 확인되는 최신 버전은 "v2.41.0"이다.
최신 버전을 사용하는 것이 중요할까!?
"Release Notes"를 한 번 살펴봐보자.
밑으로 스크롤을 내려보면 지난 버전의 Release Note도 확인 가능한데,
뭔가 새로운 명령어나 기존 명령어의 변경 및 개선 사항들이 많이 보인다.
즉, 새로운 버전이 필요한 상황이 발생할 수 있는 여지가 많다!
[ Install ① Using Apt ]
Git PPA를 추가해서 apt를 이용해 Git 최신 버전을 설치해보자.
❯ sudo add-apt-repository ppa:git-core/ppa The most current stable version of Git for Ubuntu. For release candidates, go to https://launchpad.net/~git-core/+archive/candidate . 더 많은 정보: https://launchpad.net/~git-core/+archive/ubuntu/ppa [ENTER]을 눌러 진행하거나 Ctrl-c를 눌러 추가하는것을 취소합니다. 기존:1 http://packages.microsoft.com/repos/code stable InRelease 기존:2 https://dl.google.com/linux/chrome/debstable InRelease ... ❯ sudo apt upgrade 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 업그레이드를 계산하는 중입니다... 완료 다음 패키지를 업그레이드할 것입니다: git git-man 2개 업그레이드, 0개 새로 설치, 0개 제거 및 0개 업그레이드 안 함. 9,438 k바이트 아카이브를 받아야 합니다. 이 작업 후 10.1 M바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] 받기:1 http://ppa.launchpad.net/git-core/ppa/ubuntu focal/main amd64 git amd64 1:2.41.0-0ppa1~ubuntu20.04.1 [7,325 kB] 받기:2 http://ppa.launchpad.net/git-core/ppa/ubuntu focal/main amd64 git-man all 1:2.41.0-0ppa1~ubuntu20.04.1 [2,113 kB] 내려받기 9,438 k바이트, 소요시간 31초 (302 k바이트/초) (데이터베이스 읽는중 ...현재 186326개의 파일과 디렉터리가 설치되어 있습니다.) Preparing to unpack .../git_1%3a2.41.0-0ppa1~ubuntu20.04.1_amd64.deb ... Unpacking git (1:2.41.0-0ppa1~ubuntu20.04.1) over (1:2.25.1-1ubuntu3.11) ... Preparing to unpack .../git-man_1%3a2.41.0-0ppa1~ubuntu20.04.1_all.deb ... Unpacking git-man (1:2.41.0-0ppa1~ubuntu20.04.1) over (1:2.25.1-1ubuntu3.11) ... git-man (1:2.41.0-0ppa1~ubuntu20.04.1) 설정하는 중입니다 ... git (1:2.41.0-0ppa1~ubuntu20.04.1) 설정하는 중입니다 ... Processing triggers for man-db (2.9.1-1) ... ❯ git --version git version 2.41.0 |
이걸로 끝이다.
이렇게 하면 너무 쉽기에 추천할만한 방법이지만...
간혹 내부망 등의 이슈로 PPA 추가가 어려운 경우가 있으니 다른 방법도 알아보자.
[ Install ② Source Build ]
좀 번거로울 수도 있지만, 소스코드를 내려 받아서 직접 빌드를 해보자.
일단 apt로 설치한 git 패키지를 삭제하자.
❯ sudo apt purge git 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다: git-man liberror-perl 'sudo apt autoremove'를 이용하여 제거하십시오. 다음 패키지를 지울 것입니다: git* 0개 업그레이드, 0개 새로 설치, 1개 제거 및 0개 업그레이드 안 함. 이 작업 후 46.6 M바이트의 디스크 공간이 비워집니다. 계속 하시겠습니까? [Y/n] (데이터베이스 읽는중 ...현재 186489개의 파일과 디렉터리가 설치되어 있습니다.) git (1:2.41.0-0ppa1~ubuntu20.04.1)를 제거합니다... (데이터베이스 읽는중 ...현재 185600개의 파일과 디렉터리가 설치되어 있습니다.) Purging configuration files for git (1:2.41.0-0ppa1~ubuntu20.04.1) ... |
빌드에 필요한 것들을 미리 설치해두자.
❯ sudo apt install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev make gettext libz-dev libssl-dev libghc-zlib-dev asciidoc docbook2x 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 주의, 'libz-dev' 대신에 'zlib1g-dev' 패키지를 선택합니다 패키지 make는 이미 최신 버전입니다 (4.2.1-1.2). 패키지 libexpat1-dev는 이미 최신 버전입니다 (2.2.9-1ubuntu0.6). libexpat1-dev 패키지는 수동설치로 지정합니다. 패키지 libssl-dev는 이미 최신 버전입니다 (1.1.1f-1ubuntu2.19). 패키지 zlib1g-dev는 이미 최신 버전입니다 (1:1.2.11.dfsg-2ubuntu1.5). 다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다: git-man liberror-perl 'sudo apt autoremove'를 이용하여 제거하십시오. 다음의 추가 패키지가 설치될 것입니다 : autoconf automake autopoint autotools-dev debhelper dh-strip-nondeterminism dwz ghc intltool-debian libarchive-cpio-perl libarchive-zip-perl libbsd-dev libcroco3 libdebhelper-perl libfile-stripnondeterminism-perl libltdl-dev libmail-sendmail-perl libsigsegv2 libsub-override-perl libsys-hostname-long-perl libtool m4 po-debconf 제안하는 패키지: autoconf-archive gnu-standards autoconf-doc dh-make gettext-doc libasprintf-dev libgettextpo-dev ghc-prof ghc-doc haskell-doc llvm-6.0 libcurl4-doc libidn11-dev libkrb5-dev libldap2-dev librtmp-dev libssh2-1-dev libghc-zlib-doc libghc-zlib-prof libtool-doc gfortran | fortran95-compiler gcj-jdk m4-doc libmail-box-perl 다음 새 패키지를 설치할 것입니다: autoconf automake autopoint autotools-dev debhelper dh-autoreconf dh-strip-nondeterminism dwz gettext ghc intltool-debian libarchive-cpio-perl libarchive-zip-perl libbsd-dev libcroco3 libcurl4-gnutls-dev libdebhelper-perl libfile-stripnondeterminism-perl libghc-zlib-dev libltdl-dev libmail-sendmail-perl libsigsegv2 libsub-override-perl libsys-hostname-long-perl libtool m4 po-debconf 0개 업그레이드, 27개 새로 설치, 0개 제거 및 0개 업그레이드 안 함. 74.8 M바이트 아카이브를 받아야 합니다. 이 작업 후 799 M바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] |
소스코드를 내려받을 곳을 확인해보자.
오른쪽 하단의 tags를 클릭해보자.
소스코드 내려받고, 압축을 해제하자.
❯ wget https://github.com/git/git/archive/refs/tags/v2.41.0.tar.gz --2023-07-12 00:42:52-- https://github.com/git/git/archive/refs/tags/v2.41.0.tar.gz github.com (github.com) 해석 중... 20.200.245.247 다음으로 연결 중: github.com (github.com)|20.200.245.247|:443... 연결했습니다. HTTP 요청을 보냈습니다. 응답 기다리는 중... 302 Found 위치: https://codeload.github.com/git/git/tar.gz/refs/tags/v2.41.0 [따라감] --2023-07-12 00:42:53-- https://codeload.github.com/git/git/tar.gz/refs/tags/v2.41.0 codeload.github.com (codeload.github.com) 해석 중... 20.200.245.246 다음으로 연결 중: codeload.github.com (codeload.github.com)|20.200.245.246|:443... 연결했습니다. HTTP 요청을 보냈습니다. 응답 기다리는 중... 200 OK 길이: 지정하지 않음 [application/x-gzip] 저장 위치: `v2.41.0.tar.gz' v2.41.0.tar.gz [ <=> ] 10.30M 5.51MB/s / 1.9s 2023-07-12 00:42:55 (5.51 MB/s) - `v2.41.0.tar.gz' 저장함 [10804275] ❯ tar zxvf v2.41.0.tar.gz |
이제 빌드 진행하면 된다. 어렵지 않다.
❯ cd git-2.41.0 ❯ make prefix=/usr/local all doc info GIT_VERSION = 2.41.0 * new build flags CC oss-fuzz/fuzz-commit-graph.o CC oss-fuzz/fuzz-pack-headers.o CC oss-fuzz/fuzz-pack-idx.o CC daemon.o * new link flags CC common-main.o CC abspath.o CC add-interactive.o ... ❯ sudo make prefix=/usr/local install install-doc install-html install-info |
기본 환경 설정은 필수 !!
❯ git config --global user.name "whatwant" ❯ git config --global user.email "whatwant@whatwant.com" |
자동완성 기능을 사용하고 싶다면 추가 설정을 진행하자.
bash를 사용하는 경우에는 다음과 같이 하면 된다.
❯ sudo cp ./contrib/completion/git-completion.bash /etc/bash_completion.d/ |
zsh을 사용하는 경우에는 다음과 같이 하자.
❯ mkdir ~/.zsh ❯ cp ./contrib/completion/git-completion.bash ~/.zsh/ ❯ cp ./contrib/completion/git-completion.zsh ~/.zsh/_git ❯ nano ~/.zshrc |
뒷 부분에 다음 라인을 추가하면 된다.
fpath=(~/.zsh $fpath) zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash |
shell 관련된 사항은 shell에 재진입해야 적용된다.
그게 싫다면 source 하던지...^^
빌드해서 설치까지 진행하는 과정이 어렵게 느껴질 수도 있지만
직접 버전 선택하고, 환경도 직접 꾸미는 것이 확실한 방법이긴 하다. 화이팅 !!
'SCM > Git-GitHub' 카테고리의 다른 글
git clone 용량 줄이기 & 필요한 파일만 작업하기 (1) | 2023.07.02 |
---|---|
Copilot Chat's Rules 유출(?) (0) | 2023.06.04 |
GitHub Copilot X - Chat (0) | 2023.06.04 |
GitHub-Actions 이용해서 DockerHub 업로드하기 (0) | 2023.05.30 |
Meta의 Git 지원 버전관리 도구 Sapling 공개 (0) | 2022.11.25 |