웹사이트 검색

Linux에서 Git 버전 관리 시스템을 사용하는 방법 [종합 안내서]


버전 제어(개정 제어 또는 소스 제어)는 나중에 특정 버전을 불러올 수 있도록 시간 경과에 따른 파일 또는 파일 모음의 변경 사항을 기록하는 방법입니다. 버전 제어 시스템(또는 줄여서 VCS)은 파일 시스템의 파일 변경 사항을 기록하는 도구입니다.

시중에는 많은 버전 제어 시스템이 있지만 Git은 현재 특히 소스 코드 관리에 가장 널리 사용되고 자주 사용됩니다. 버전 관리는 실제로 소스 코드뿐만 아니라 컴퓨터에 있는 거의 모든 유형의 파일에 사용할 수 있습니다.

버전 관리 시스템/도구는 개인 또는 그룹이 다음을 수행할 수 있도록 하는 여러 기능을 제공합니다.

  • 프로젝트 버전을 생성합니다.
  • 변경 사항을 정확하게 추적하고 충돌을 해결합니다.
  • 변경 사항을 공통 버전으로 병합합니다.
  • 선택한 파일이나 전체 프로젝트에 대한 변경 사항을 롤백하고 실행 취소합니다.
  • 프로젝트의 과거 버전에 액세스하여 시간 경과에 따른 변경 사항을 비교할 수 있습니다.
  • 문제를 일으킬 수 있는 항목을 마지막으로 수정한 사람이 누구인지 확인하세요.
  • 프로젝트의 안전한 오프사이트 백업을 생성합니다.
  • 여러 대의 기계를 사용하여 단일 프로젝트 작업 등 다양한 작업을 수행할 수 있습니다.

Git과 같은 버전 제어 시스템의 프로젝트에는 주로 다음 세 가지 섹션이 있습니다.

  • 저장소: 프로젝트 파일의 상태나 변경 사항을 기록하기 위한 데이터베이스입니다. 여기에는 새 프로젝트에 필요한 모든 Git 메타데이터와 개체가 포함되어 있습니다. 이는 일반적으로 네트워크 또는 원격 서버의 다른 컴퓨터에서 저장소를 복제할 때 복사되는 것입니다.
  • 작업 디렉토리 또는 영역: 작업할 수 있는 프로젝트 파일의 복사본을 저장합니다(추가, 삭제 및 기타 수정 작업 수행).
  • 준비 영역: 저장소에 커밋(파일 또는 파일 집합의 상태 저장)할 준비가 된 변경 사항에 대한 정보를 저장하는 Git 디렉터리 내의 파일(Git 아래 인덱스로 알려짐)입니다.

VCS에는 두 가지 주요 유형이 있으며 주요 차이점은 저장소 수입니다.

  • 중앙 버전 제어 시스템(CVCS): 여기서 각 프로젝트 팀 구성원은 자신의 로컬 작업 디렉토리를 갖지만 단일 중앙 저장소에만 변경 사항을 커밋합니다.
  • 분산 버전 제어 시스템(DVCS): 이 아래에서 각 프로젝트 팀 구성원은 커밋을 할 수 있는 자신의 로컬 작업 디렉터리와 Git 디렉터리를 얻습니다. 개인이 로컬에서 커밋한 후에는 다른 팀 구성원이 변경 사항을 중앙 저장소에 푸시할 때까지 변경 사항에 액세스할 수 없습니다. Git은 DVCS의 예입니다.

또한 Git 저장소는 베어(작업 디렉토리가 없는 저장소) 또는 비베어(작업 디렉토리가 있는 저장소)일 수 있습니다. 예배 규칙서). 공유(또는 공개 또는 중앙) 저장소는 항상 베어 상태여야 합니다. 모든 Github 저장소는 베어 상태입니다.

Git으로 버전 관리 배우기

Git은 빠르고 강력하며 분산되어 있고 사용하기 쉬운 무료 오픈 소스이며 대규모 프로젝트에 매우 효율적이며 뛰어난 분기 및 병합 시스템을 갖춘 인기 있는 버전 제어 시스템입니다. 이는 Git 디렉터리에 저장되는 미니 파일 시스템의 일련의 스냅샷과 같은 데이터를 처리하도록 설계되었습니다.

Git 의 작업 흐름은 매우 간단합니다. 작업 디렉터리의 파일을 수정한 다음 변경된 파일만 선택적으로 스테이징 영역에 추가하여 다음 커밋에 포함시킵니다.

준비가 되면 스테이징 영역에서 파일을 가져와 해당 스냅샷을 Git 디렉터리에 영구적으로 저장하는 커밋을 수행합니다.

Linux에 Git을 설치하려면 선택한 배포판에 적합한 명령을 사용하세요.

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

Git을 설치한 후 다음과 같이 이름과 이메일 주소를 제공하여 Git에 자신이 누구인지 알려주는 것이 좋습니다.

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

Git 설정을 확인하려면 다음 명령을 사용하십시오.

git config --list 

새로운 Git 저장소를 생성합니다.

공유 저장소 또는 중앙 집중식 워크플로는 매우 일반적이며 여기서는 이에 대해 설명하겠습니다. 예를 들어, bashscripts라는 프로젝트 작업을 위해 조직 내 다양한 부서의 시스템 관리자/프로그래머를 위한 원격 중앙 저장소를 설정하는 작업을 맡았다고 가정합니다. 이 저장소는 아래에 저장됩니다. >/projects/scritpts/ 서버에 있습니다.

SSH를 원격 서버에 연결하고 필요한 디렉토리를 생성하고 sysadmins라는 그룹을 생성한 다음(모든 프로젝트 팀 구성원을 이 그룹에 추가(예: 사용자 admin)), 적절한 권한을 설정합니다. 이 디렉토리.

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

그런 다음 베어 프로젝트 저장소를 초기화합니다.

git init --bare /projects/scripts/bashscripts

이제 프로젝트의 중앙 저장 시설인 기본 Git 디렉터리를 성공적으로 초기화했습니다. 거기에 있는 모든 파일과 디렉토리를 보려면 디렉토리 목록을 작성해 보십시오.

ls -la /projects/scripts/bashscripts/

Git 저장소 복제

이제 SSH를 통해 원격 공유 Git 저장소를 로컬 컴퓨터에 복제합니다. (웹 서버가 설치되고 적절하게 구성된 경우 HTTP/HTTPS를 통해 복제할 수도 있습니다. Github의 대부분의 공개 저장소의 경우) 예를 들면 다음과 같습니다.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

특정 디렉터리(~/bin/bashscripts)에 복제하려면 아래 명령을 사용하세요.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

이제 베어가 아닌 저장소(작업 디렉터리 포함)에 프로젝트의 로컬 인스턴스가 있으므로 프로젝트의 초기 구조를 만들 수 있습니다(예: README.md 추가) 파일, 다양한 스크립트 범주에 대한 하위 디렉터리(예: 정찰 스크립트를 저장하기 위한 recon, sysadmin ro 저장소 sysadmin 스크립트 등):

cd ~/bin/bashscripts/
ls -la

Git 상태 요약 확인

작업 디렉토리의 상태를 표시하려면 상태 명령을 사용하여 변경 사항을 표시하세요. Git이 추적하지 않는 파일 준비된 변경 사항 등.

git status 

Git 단계 변경 및 커밋

다음으로, -A 스위치와 함께 add 명령을 사용하여 모든 변경 사항을 스테이징하고 초기 커밋을 수행합니다. -a 플래그는 수정된 파일을 자동으로 준비하도록 명령에 지시하고 -m은 커밋 메시지를 지정하는 데 사용됩니다.

git add -A
git commit -a -m "Initial Commit"

원격 Git 저장소에 로컬 커밋 게시

프로젝트 팀 리더로서 이제 프로젝트 구조를 만들었으므로 표시된 대로 푸시 명령을 사용하여 변경 사항을 중앙 저장소에 게시할 수 있습니다.

git push origin master

현재 로컬 git 저장소는 프로젝트 중앙 저장소(원본)와 최신 상태여야 합니다. status 명령을 한 번 더 실행하여 이를 확인할 수 있습니다.

git status

또한 저장소를 로컬 컴퓨터에 복제하여 프로젝트 작업을 시작하도록 동료에게 알릴 수도 있습니다.

새 Git 브랜치 생성

분기를 사용하면 코드베이스(마스터 분기)를 건드리지 않고도 프로젝트 기능에 대해 작업하거나 문제를 신속하게 해결할 수 있습니다. 새 브랜치를 생성한 후 전환하려면 브랜치체크아웃 명령을 각각 사용하세요.

git branch latest
git checkout latest

또는 -b 플래그와 함께 checkout 명령을 사용하여 한 단계로 새 분기를 만들고 전환할 수 있습니다.

git checkout -b latest

예를 들어, 다른 분기를 기반으로 새 분기를 만들 수도 있습니다.

git checkout -b latest master

현재 있는 분기를 확인하려면 분기 명령을 사용하세요(별표 문자는 활성 분기를 나타냄).

git branch

새 브랜치를 생성하고 전환한 후 그 아래에서 몇 가지 사항을 변경하고 일부 커밋을 수행합니다.

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

한 브랜치에서 다른 브랜치로 변경 사항 병합

브랜치 테스트의 변경 사항을 마스터 브랜치에 병합하려면 마스터 브랜치로 전환하고 병합을 수행하세요.

git checkout master 
git merge test 

특정 분기가 더 이상 필요하지 않은 경우 -d 스위치를 사용하여 삭제할 수 있습니다.

git branch -d test

원격 중앙 저장소에서 변경 사항 다운로드

팀 구성원이 변경 사항을 중앙 프로젝트 저장소에 푸시했다고 가정하면 pull 명령을 사용하여 프로젝트의 로컬 인스턴스에 변경 사항을 다운로드할 수 있습니다.

git pull origin
OR
git pull origin master	#if you have switched to another branch

Git 리포지토리 검사 및 비교 수행

이 마지막 섹션에서는 리포지토리에서 발생한 모든 활동을 추적하여 프로젝트 기록을 볼 수 있는 몇 가지 유용한 Git 기능을 다룹니다.

첫 번째 기능은 커밋 로그를 표시하는 Git 로그입니다.

git log

또 다른 중요한 기능은 다양한 유형의 개체(예: 커밋, 태그, 트리 등)를 표시하는 show 명령입니다.

git show

알아야 할 세 번째 중요한 기능은 diff 명령으로, 분기 간의 차이점을 비교하거나 표시하고, 작업 디렉터리와 인덱스 간의 변경 사항을 표시하고, 디스크에 있는 두 파일 간의 변경 사항 등을 표시하는 데 사용됩니다.

예를 들어 마스터 브랜치와 최신 브랜치의 차이점을 표시하려면 다음 명령을 실행할 수 있습니다.

git diff master latest

더 읽기: 오픈 소스 프로젝트 호스팅을 위한 10가지 최고의 Git 대안

요약

Git을 사용하면 여러 사람들이 동일한 파일을 사용하여 함께 작업하는 동시에 나중에 특정 버전을 기억할 수 있도록 시간 경과에 따른 파일 변경 사항을 기록할 수 있습니다.

이렇게 하면 Git을 사용하여 소스 코드, 구성 파일 또는 컴퓨터에 저장된 모든 파일을 관리할 수 있습니다. 추가 문서는 Git 온라인 문서를 참조할 수 있습니다.