WorkaHolic

[Git (2)] Git 명령어, 저장소 만들기(init) 및 커밋 하기(add / commit)

2020. 8. 18. 14:04
반응형

[Git (2)]  Git 명령어, 저장소 만들기(init) 및 커밋 하기(add / commit)

안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Git 명령어 간단 정리 및 저장소 생성 및 커밋 하기 (Init, add, commit) 입니다. : ) 

0. 들어가기 앞서

Git은 대부분의 명령을 로컬에서 실행 한다. 

이때문에 여러 장점이 있다. 속도도 빠르며, 오프라인에서도 작업이 가능하다. 등등.

이번 포스팅에선 간단하게 로컬 저장소(Local Repository)를 생성하여 변경 이력을 커밋해보려고 한다.

 

Git 저장소를 사용하기 위하여 주로 다음 2가지 방법으로 저장소를 쓰기 시작 한다.

1) 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법

2) 다른 어딘가에서 Git 저장소를 Clone 하는 방법

 

이번 포스팅에선 1)번 방법에 대해 포스팅 하려 한다.

 

※ 기초 개념 및 용어

◎ Repository

 - 저장소(Repository, Repo) : 어떠한 프로젝트 관련 내용을 저장하는 공간 생각하면 된다.

 - 나중에 특정 Repository를 내려 받을때(Clone) 이 Repository를 가리키는 URL이 필요한데, 맨마지막 .git 확장자로 표현된다.

 

 Branch

 - 일종의 독립적인 작업 공간

 - 최초 Git 초기화시 기본적으로 "master"라는 브랜치가 생성된다.(main branch)

 - 이후 버그 픽스 또는 여러 프로젝트를 동시에 개발하여 나중에 합치기 위하여 브랜치를 새로 생성, 이후 master로 다시 합치는 작업을 한다.

 

1. Git 저장소 생성

▶ 1. git init

 - 로컬 저장소로 사용할 폴더를 생성하여 해당 폴더로 이동한다.

 - 해당 폴더에서 마우스 우클릭 > git bash 실행 > "git init" 명령어 실행

 - Initialized empty Git repository in [경로] 이렇게 한 줄이 찍히고 .git이라는 숨겨진 폴더가 생성 된다.

$ git init

 - 혹시나 폴더가 보이지 않으면 window10 기준으로 숨긴 항목 표시하기를 선택 하여 준다.

 - 폴더가 생성된 것을 볼 수 있다.

 - .git 디렉토리에는 저장소에 필요한 뼈대 파일(Skeleton)이 들어 있다.

 - 별도 설정을 하지 않는다면 git config --global 옵션으로 설정 되어있는 정보들을 적용한다.

 - 현재 설정정보 조회

git config --global --list

 

▶ 2. git status

 - 파일 상태 확인 명령어 이다.

git status

 - On branch : 현재 작업중인 branch (기본 branch : master)

 - 아직 커밋된 파일이 없음을 확인 할 수 있다.

 

2. 파일 추가 및 커밋

커밋하기 전 간단하게 다음 개념을 간단히 짚고 넘어 가는것이 좋을 것 같다.

git은 일반적으로 Working Directory, Index, Repository, Stash의 4개 영역으로 관리 된다.

▶ Git의 4가지 영역

1) Working Directory (작업영역)

 - 실제 프로젝트 디렉토리

 - .git 이력과 관련 정보가 저장 된 .git을 제외한 모든 영역

 - 실제 코드의 추가, 수정, 삭제 작업이 이루어지는 영역

 

2) Repository (저장소)

 - 파일, 폴더를 변경 이력별로 저장해 두는 곳

 - .git 디렉토리내 존재하며 2가지로 나뉜다.

 - 2.1) Local Repository : 개인 PC에 파일이 저장되는 개인 저장소

 - 2.2) Remote Repository : 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유도 가능한 저장소

 

3) Index (Staging Area)

 - Working Directory에서 Repository로 정보 저장 전 준비 영역

 - 파일 상태를 기록, 스테이징 한다고 표현 한다.

 - .git/index 파일로 관리된다.

 - 3.1) git add : Working Directory 에서 Index 영역으로 정보가 저장됨.

 - 3.2) git commit : Index영역에서 Repository로 정보가 저장됨.

 

4) Stash

 - 위의 3가지 영역과 다른 별개의 임시 영역

 - 임시적으로 작업사항을 저장해두고 나중에 꺼내올 수 있다.

▶ 1. git add

 - Index에 파일 추가 하는 명령어 이다.

   (unstacked files의 파일들, Changed but not updated 파일들을 스테이징에 add)

 - 옵션: -A, --all 변경된 모든 파일 추가

 - 신규 파일을 해당 폴더에 추가해 보자.

git status

 - git add 명령어 실행하기전 이기 때문에 Untracked files, 추적하지 않는 파일리스트에 노출 되는것을 볼 수 있다.

 

git add test.txt

git status

 - test.txt파일이 인덱스(Staging Area)에 포함 된 것을 확인할 수 있다.
 - 'Changes to be committed' 목록에 있는 파일들은 Staged 상태라는 것을 의미 한다.

 - 파일이 많은 경우엔 git add . 명령을 이용하여 해당 폴더의 Unstacked Files 모두 한번에 stage하는 것도 가능하다. (git add --all, git add -A)

git add .

▶ 2. git rm

1) --cached : Index에 추가된 파일을 staging area에서 제외(working directory의 파일은 유지)

2) -f, --force : 삭제하려는 파일의 내용이 브랜치 끝 부분에서의 내용과 다를 경우 강제 삭제

3) --ignore-unmatch : 삭제하려는 파일이 없을 때 발생하는 에러 무시

git rm --cached test.txt

▶ 3. git commit

 - 변경사항 확정에 사용하는 명령어이다.

 

3.1 git commit -m "커밋 메지" 

 - 스테이징 영역의 파일들을 커밋한다.

 - -m은 커밋메세지 옵션

 - 여러 줄의 커밋메세지는 여러개의 -m 을 사용하여 처리 가능 하다.

 

3.2 git commit -a : 자동으로 add를 진행한 후 커밋

 - 별도의 add명령어를 사용하지 않고 수정된 파일에 대해 add, commit을 한번에 수행한다.

 - 한번도 add되지 않은 파일은 add를 따로 작업 해줘야 한다.

 

3.3 git commit -am "커밋 메세지" : a, m의 옵션을 합친 형태.

 

3.4 git commit -v : 커밋 메세지에 diff의 내용 포함

 

git commit -m "커밋 테스트"

 

▶ 4. git log 

git log

 - git log : commit history 확인

 - Author 영역의 이름과 이메일 주소는 git config 명령을 통해 세팅했던 user.name / user.email 값이 표기 된다.

 

※ 옵션

-p : 변경사항 확인

--oneline : 커밋 메세지만 한줄씩 표시

--all : 모든 브랜치 로그 표시

--graph : 브랜치 트리 그래프 표시

▶ 5. git diff 

※ 옵션 : --staged

 - 마지막 커밋과 staging area의 차이 확인

▶ 6. git reset 

※ 옵션

1) git reset

 - 직전의 add 이전의 상태로 staging area를 되돌린다.

2) git reset --soft HEAD^

 

 

다음엔 Local Repository에 Commit한 내용을 원격 저장소(Github 등)에 연결하고, push 하는 내용을 알아 보도록 해야 겠다.



출처: https://goddaehee.tistory.com/217?category=381481 [갓대희의 작은공간]

반응형