Linux/Git 기초 Ch 3. 로컬 Git 리포지토리

HanSungUk·2022년 5월 19일
0

Linux / Git 기초

목록 보기
3/4
post-thumbnail

Linux/Git 기초 Ch 3. 로컬 Git 리포지토리 입니다.

현재 코드스테이츠 강의를 통해 프론트엔드를 학습하고 있습니다.
본 포스트는 해당 강의에 대한 내용 정리를 목적으로 합니다.

학습목표

  • 로컬 Git 리포지토리를 직접 생성할 수 있다.
  • staging area의 개념에 대해서 이해하고 git add로 staging area에 변경한 코드를 추가할 수 있다.
  • git commit으로 자신이 작업한 결과물을 기록할 수 있다.

들어가기 전

  • 버전 관리(Version Control)
    우리는 버전 관리를 통해 만일의 사태에 대비하여 코드를 저장(Backup)할 수 있고 과거에 저장된 코드로 복구(Recovery)할 수 있으며, 다른 사람과 협업(Collaboration)할 수 있습니다.

  • 깃(Git)과 깃헙(Github)
    깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일 작업을 조율하기 위한 대표적인 버전 관리 시스템(VCS: Version Control System)이며, 로컬에서 버전을 관리합니다.
    깃헙(Github)은 깃(Git)을 통해 로컬에서 버전 관리한 코드를 다른 사람과 공유할 수 있게 한 클라우드 기반 호스팅 서비스이며, 깃헙(Github)을 통해 다른 사람과 협업이 가능합니다.


로컬 Git 리포지토리는 자신의 컴퓨터(로컬 환경)의 작업 공간에 위치한 Git 리포지토리입니다.
컴퓨터 하드 드라이브에 원하는 디렉토리로 이동해서 로컬 Git 리포지토리를 추가하면 해당 디렉토리의 파일 변화를 감지할 수 있습니다.
반대로, Github에서 생성한 리포지토리는 원격(remote)Git 리포지토리라고 부릅니다. 내 컴퓨터 상에는 없지만, 원격에 존재하는 리포지토리입니다.

1. 로컬 Git 리포지토리 만들기

  1. 코드를 저장할 디렉토리를 만들고 해당 디렉토리에 로컬 Git repository를 생성합니다.(git init)

  2. 코드를 작성하고 저장하는 공간, 작업 공간(work space)의 파일 및 디렉토리를 git의 관리 하에 있는 상태로 올려줄 수 있습니다.
    (git add)이 영역이 staging area입니다.

  3. staging area의 파일은 commit이 가능합니다.
    commit으로 local Git repository에 내 코드를 기록할 수 있습니다.(git commit)

git init
작업 공간에 local Git repository를 생성합니다.
일반적인 폴더에 Git repository를 추가하면 개발자는 Git을 이용하여 자신의 프로그램 버전 관리를 할 수 있습니다.

// 디렉토리 생성
mkdir ~/Desktop/gitpractice
cd ~/Desktop/gitpractice
// 디렉토리 생성
mkdir my-app
// 디렉토리 이동(change directory)
cd my-app
// 파일 생성
touch index.html style.css
ls
index.html style.css

// 아래의 위치에서 git init을 입력하면 Git 리포지토리가 my-app에 생성됩니다.
~/Desktop/gitpractice/my-app > 

git init
Initialized empty Git repository in /Users/hansunghoo/Desktop/codestates/my-app/.git/
//{작업 공간 디렉토리}/.git 폴더에 Git 활용을 위한 디렉토리가 생성된 것을 확인할 수 있습니다.

2. Staging area

Commit 하기 전에 내용을 기록하는 장소 입니다.
git add <파일명> 명령어로 원하는 파일 혹은 디렉토리를 staging area로 옮길 수 있습니다. 즉, 내 Local의 Untracked files를 Git의 관리 하인 Staging area로 추가할 수 있습니다.
git status로 staging area의 내용을 확인할 수 있습니다.
git add 명령어 이후 git status 명령어를 실행하면 work space에 있는 untracked 파일, staging area에 있는 tracked 파일 목록을 확인할 수 있습니다.

hansunghoo@hanseonghuui-MacBookPro my-app % git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	index.html
	style.css

nothing added to commit but untracked files present (use "git add" to track)

만약, git 리포지토리가 없는 디렉토리에서는 다음의 메시지를 출력합니다.

hansunghoo@hanseonghuui-MacBookPro codestates % git status
fatal: not a git repository (or any of the parent directories): .git

위에서 언급했던 것처럼 git init의 명령어를 통해 git 리포지토리를 생성할 수 있습니다. 다시 돌아와서 git add 명령어를 수행해보도록 하겠습니다.

hansunghoo@hanseonghuui-MacBookPro my-app % git add index.html
hansunghoo@hanseonghuui-MacBookPro my-app % git status
On branch master  // 현재 브랜치

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage) // staging area에서 제거(unstage)
	new file:   index.html

Untracked files:
  (use "git add <file>..." to include in what will be committed) // staging area로 추가
	style.css

위 예제처럼 git add index.html를 하고 git status 명령어를 수행하니 inedx.html에 대해 "Changes to be commited" 메시지가 출력되었습니다.

3. git commit

staging area에 있는 코드 내역을 그대로 스냅샷을 찍어서 기록하는 행위입니다. 즉, 수정 작업이 끝났을 때 변경 사항을 저장합니다. 저장 후에는 staging area는 비워집니다.
상세한 git commit 기록은 아래와 같은 장점이 있습니다.

  • 코드를 잘못 적은 경우에, 이전 기록을 더 쉽게 복원할 수 있습니다.
  • 누가 해당 코드를 수정했는지 쉽게 파악할 수 있습니다.
git commit -m "나의 애플리케이션 html, css 완성"
[master (root-commit) ec3e709] "나의 애플리케이션 html, css 완성"
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 index.html
 create mode 100644 style.css

0개의 댓글