고기 대신 SW 한점/GIT

[Git] 개념잡기 1 (시작하기)

지식한점 2022. 10. 7. 17:36
반응형

Git 설치.

깃을 사용하려면 먼저 깃 프로그램을 설치해야 합니다.

윈도, 리눅스, 맥등 여러 운영 체제에서 깃을 설치하고 사용할 수 있습니다.

  • Mac OS X – Download .dmg file and install the Git core.
  • Windows – Download .exe file and install.
  • Linux – For Linux, we have many ways and multiple package managers are allowing us to install GIT core easily. 
    • Debian/Ubuntu – apt-get install git
    • Fedora – up to Fedora 21 yum install git and for Fedora 22 and later dnf install git
    • FreeBSD – pkg install git
    • openSUSE – zypper install git

Git 개념

GIT은 distributed version control system 입니다. 이는 코드의 기본 복사본이 원격 저장소(Git Server)에

저장됨을 의미합니다. 그리고 개발자가 코드 작업을 원할 때마다 개발자는 코드를

Local저장소(Git Client)에 복제합니다.

그런 다음 개발자는 기본 코드 베이스에서 분기(branchj)를 만들고 변경합니다.

변경이 완료되면 개발자는 remote repository의 코드를 업데이트 합니다.

Concept of GIT
 

GIT Local (GIT Client)

Git local 또는 Git Client는 다음과 같은 세가지 주요 부분으로 분류할 수 있습니다.

  • The Development Working directory
  • The Staging Area
  • The Local Repository

The Development Working Directory

개발자가 원격 저장소에서 코드 베이스를 복제하면 로컬 시스템의 작업 디렉토리에 복사됩니다.

원격 저장소에서 코드베이스를 복제하는 동안 .git folder에는 다음 folder와 file이 있습니다.

  • .git/config – Git의 주요 설정과 정보를 담고 있는 파일 (eg., remote).
  • .git/HEAD – 어떤 지점에서 작업했는지에 대한 정보
  •  .git/index – 작업 진행 상황의 체크 포인트 역할을 하는 바이너리 파일입니다.
    색인 파일에는 모든 파일 목록, SHA-1 체크섬, 타임스탬프 및 파일 이름과 같은 정보가 있습니다.
  • .git/description – 저장소에 대한 설명이 있는 파일입니다.
  • .git/hooks/ – 웹후킹을 위한 스크립트가 있는 디렉토리 입니다.
  •  .git/logs/ – Git의 모든 이벤트를 저장하는 로그 파일 디렉토리입니다.
  • .git/refs/ – 디렉토리에는 파일과 참조의 SHA-1 값이 포함됩니다.

이 디렉토리에 있는 코드베이스의 모든 코드 변경 및 기타 이벤트는 .git folder에 캡쳐 됩니다.

The Staging Area

준비영역(Staging Area)은 코드 변경 사항이 인덱스에 저장되는 Git 워크플로의 한 단계입니다.

인덱스는 마지막 시간 이후 코드베이스에서 발생한 변경 사항만 전달합니다.

add 명령을 전달하면 git는 파일의 모든 변경 사항을 수집하여 HEAD에 보관합니다.

The Local Repository

로컬 저장소(Repository)는 모든 변경 사항과 변경 사항에 대한 정보가 저장되는 단계 또는 장소입니다.

이 로컬 리포지토리는 코드 베이스의 기본 복사본인 원격 리포지토리에서 생성됩니다.

이 로컬 저장소는 git client 도구를 통해 복제하여 원격 저장소에서 생성됩니다.

GIT Remote (GIT Server)

Remote Repository는 Git 원격 서버 또는 중앙 집중식 서버에 저장되며 코드의 기본 복사본이 저장됩니다.

로컬 저장소에 commit한 후 개발자는 git client 도구의 push command를 전달하여 변경된 코드를

원격 서버로 보냅니다.

GIT Workflow.

Git 기본 및 초보자 가이드의 일부로 Git 워크플로라고  하는 git의 중요한 프로세스 흐름에

대해 설명합니다. GIT workflow는 버젼 관리 및 버젼 제어의 GIT 프로세스 주기입니다.

원격(마스터) 레포지토리에서 코드를 가져오는 것에서 시작하여 변경된 코드를 로컬에서

원격 레포지토리로 push back 하는 곳입니다.

GIT clone, GIT pull and GIT Fetch

GIT clone은 다음 명령을 전달하여 원격 또는 로컬 저장소의 작업 복사본을 만드는 

프로세스 입니다.

git clone /path_of_repository
git clone username@git_server_hostname:/path_of_repository

이미 저장소를 복제했고 원격 서버에 대한 로컬(코드만)을 업데이트해야 하는 경우
다음 명령을 전달하여 원격 서버에서 코드를 가져와야 합니다.

git pull origin master

위의 명령에서 git pull은 명령이고 orgin은 원격 서버의 원격 참조/URL이며, master는 branch입니다.

Git 가져오기는 로컬 Git 구조 및 원격 저장소의 정보를 업데이트(Git 정보만)하는 프로세스입니다.

다음 명령을 전달하면 원격 저장소를 가져 올 수 있습니다.

GIT Checkout

Git checkout은 git branch의 현재 상태를 다른 것으로 가져오거나 변경하는 이벤트입니다.

branch를 생성하고 생성된 branch로 이동하고자 할때 다음 명령어를 사용합니다.

git checkout -b <new_branch> 

이 명령은 <new_branch>라는 branch를 생성하고 현재 HEAD는 새로 생성된 브랜치로 이동합니다.

즉, 이 명령 이후의 변경 사항은 새로 생성된 분기에 캡쳐 됩니다.

GIT Add and GIT Commit

When we want to add the changes of code to the index of the GIT, we will pass the following command.

git add <file1> <file2> <file3>

or

git add * 

Basically, this is the first step of the GIT workflow.

GIT commit is the event of adding the index to the HEAD of the local repository. This will be done by passing following command

git commit -m “your commit message”

But, this commit will be done only on the local repository. Which mean, we need to push the commits and updated HEAD to the remote repository.

GIT Workflow

GIT push.

local repository에 변경 사항을 commit하면 base code의 변경 사항에 대한 정보와 함께 변경 메시지가 표시됩니다.

따라서 원격 저장소로 변경 사항을 업데이트하거나 보내려면 다음 명령을 전달해야 합니다.

git push origin <new_branch>

Git pull에서 본 것 처럼 origin은 원격 서버 위치의 별칭 이름입니다.

<new_branch>를 가리키면 Git push명령은 원격 서버에 새 분기를 만들고 변경 사항을 저장합니다.

이것이 기본 workflow이지만 workflow의 전부는 아닙니다. <new_branch>를 master에 병합해야 합니다.

GIT Merge

GIT Merge는 <new_branch>의 업데이트를 마스터 분기 또는 병합 합니다.

Branch를 현재 Branch와 병합합니다. 작업 분기로 checkout하고 다음 명령을 전달합니다.

git merge <master_or_destination_branch>

이것은 <new_branch>에 있는 변경 사항을 병합하고,

<master_or_destination_branch>에 추가합니다.

이상적으로는 Github 또는 BitBuckert과 같은 서비스 도구를 호스팅하여 이 프로세스를 처리합니다.

 

반응형

'고기 대신 SW 한점 > GIT' 카테고리의 다른 글

[git] Branch 브랜치 끝장내기 2  (0) 2022.10.20
[git] Branch 브랜치 끝장내기 1  (0) 2022.10.20
[Git]Conflict(충돌) 해결하기  (0) 2022.10.07
[Git]cherry-pick : 끝장내기  (0) 2022.10.06
SW version 관리  (0) 2022.09.28