[GIT] Init / Add / Commit

박현희·2020년 9월 6일
0

Git 기초 용어

git init

  • 버전관리 하고싶은 폴더에서 초기화를 하는 준비

git branch

  • 독립적인 공간을 만든다.

  • 새로 만든 branch lab1은 master와 완전히 동일한 상태를 가진 공간.

  • 브랜치에서 수정을 한 후 커밋하면 lab1에만 기록되며 master 브랜치에는 어떤 영향도 주지 않는다.

  • 원하는 만큼 빠르게 branch를 만들 수 있다.

  • 실험 중 다른 브랜치로 돌아가야 할 때 : checkout master 로 head를 옮겨야 한다.

(cf > 작업 중인 위치를 가르키는 가상의 커서가 존재하는데 이를 git에서는 HEAD라 한다.)

  • 실험 성공 : lab1 브랜치의 내용을 마스터 브랜치와 병합(Merge) 한다.

  • 실험 실패 : lab1 브랜치를 삭제한다.

checkout

  • 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다.

git commit

  • 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업

pull

  • 리모트 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업을 pull이라 한다.

master

  • git init을 했을 때, default로 만들어지는 가지가 'master'이다.

1.Git 설치

사이트에서 git을 설치합니다.

2.Git 설정

git config 명령어를 이용하여 여러가지 설정 값을 수정할 수 있으면 그 내용은 홈 폴더의 .gitconfig 파일에 저장됩니다.(-e --edit 옵션으로 편집기 오픈 가능)
git config --help 명령어를 사용하면 각 옵션에 대한 상세한 설명을 볼 수 있습니다.

3.사용자 정보 설정

여러 설정 값중에 가장 먼저 해야할건 사용자 정보 설정입니다.
사용자명(user.name)과 메일주소(user.email) 셋팅입니다.
해당 값은 변경이력(commit history)에 기록됩니다.

git config - -global user.name “Your name”
git config - -global user.email “Your email address”


--global 옵션을 사용하면 해당 설정을 모든 프로젝트에 적용할 수 있습니다.

저장소별로 사용자명/이메일 구성하기 (해당 저장소 디렉터리로 이동후)

git config user.name “Your name”
git config user.email “Your email address”

이후 git config --list 옵션을 통해 설정한 정보들이 잘 적용 됐는지 확인해봅니다.

전역 설정 정보 조회

git config - -global - -list

저장소별 설정 정보 조회

git config - -list

4.Git 저장소 생성

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

해당 폴더로 이동 후 git init명령어를 실행하면 새로운 저장소가 생성됩니다.

위 명령어를 실행하면 저장소 구성을 위한 .git폴더가 생성되며 이 폴더에는 프로젝트 관리를 위한 파일들과 해당 프로젝트에만 적용할 config파일등이 들어있습니다.
별도 설정이 되어있지 않다면 이전에 설정한 글로벌 옵션 정보들을 사용합니다.

5.파일 상태 확인

git status명령어를 이용해 현재 저장소 내의 파일들 상태를 확인해 볼 수 있습니다.

on branch master는 현재 작업중인 브랜치를 의미합니다.
기본 브랜치로 "master"를 사용하고 있다는 내용입니다.
그리고 nothing to commit, working tree clean으로 아무런 commit 내역이 없다는 것을 보여줍니다.

6.인덱스에 파일 추가

Git의 Repository 구조는 크게 세가지로 구성되어 있습니다.
작업폴더(Working Directory) > 인덱스(Stagind Area) > 저장소(Head-Repository)

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로 정보가 저장됨.

우리가 작업하는 폴더를 작업트리(Working Directory)라고 부르며 commit을 실행하기 전에 작업트리와 저장소 사이에 존재하는 가상의 준비영역(Staging Area)을 인덱스라고 합니다.

저장소에 commit하기 위해서 먼저 추가 및 변경하고자 하는 파일을 인덱스에 기록(stage)하고 이후 기록된 목록만 최종적으로 commit 명령어에 의해 저장소에 공개하게 됩니다.

git add [파일명] 이용하여 "profile.html"파일을 인텍스에 스테이지한 뒤 상태를 확인해보겠습니다.

(이전 예시는 깃헙에 올린적이 있어서 안먹힘. 그래서 예시 파일과 폴더가 바뀜)

파일들이 인덱스(Staging Area)에 포함된 것을 볼 수 있습니다.
"Changes to be committed:" 목록에 있는 파일은 Staged 상태라는 뜻입니다.

참고
파일의 일부를 스테이징하기

git add -p [<파일> [<파일> [기타 파일들…]]]

add 명령에서 Git 대화 모드를 사용하여 파일 추가하기

git add -i

수정되고 추적되는 파일의 변경 사항 스테이징하기

git add -u [<경로> [<경로>]]

. git rm (코드 예시에는 없지만 자주 쓰임)

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

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

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

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

7.변경사항 확정

git commit -m [설명] 명령을 실행하여 파일들을 HEAD에 적용해 보겠습니다. 참고로 git commit -a 옵셤을 사용하면 스테이징 절차(add)를 생략하고 바로 add와 commit을 동시에 하는 것도 가능합니다.

commit 후 git log명령어를 실행해보면 commit history가 정상적으로 남은 것을 볼 수 있습니다.

참고
수정되고 추적되는 모든 파일의 변경 사항 커밋하기

git commit -m “<메시지>” -a

작업 트리의 변경 사항 돌려놓기

git checkout HEAD <파일> [<파일>]

커밋되지 않고 스테이징된 변경 사항 재설정하기

git reset HEAD <파일> [<파일>]

마지막 커밋 고치기

git commit -m “<메시지>” - -amend

a, m의 옵션을 합친 형태

git commit -am "<메세지>" 

이전 커밋을 수정하고 커밋 메시지를 재사용하기

git commit -C HEAD - -amend

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

0개의 댓글