[Git] Git 기본 사용법1

Alex·2022년 4월 14일
0

git

목록 보기
1/2

📚 Git 개요

Git은 대표적인 버전 관리 시스템(Version Control System)으로 줄여서 VCS라고 한다.

버전관리란 파일을 수정하여 저장할 때마다 버전을 남기고, 버전을 추적하여 작업 과정을 관리하는 것을 말한다.

Git은 스냅샷을 통해 파일을 관리한다. 스냅샷은 commit 순간에 만들어진다.

commit시 스냅샷 생성과 관리방방법

위의 사진은 commit을 하는 순간에 스냅샷을 생성하고, 변경된 파일들이 어떻게 관리되어 있는지를 나타내고 있다.

📚 Git Process Flow와 File Life Cycle

📖 Git Process Flow

process flow 그림

git init이나 git clone으로 프로젝트를 생성하면, 해당 프로젝트는 로컬저장소가 되며, 3가지의 상태로 흐름이 생긴다.

working directory상태는 새로 생성된 파일이나 기존에 추적 중이던 파일을 나타낸다. git add명령어를 통해 staging area 상태로 변경이 가능하다.

staging area상태는 로컬저장소에 변경된 내용을 확정짓기 전에 임시적으로 대상을 넣어놓은 상태를 말한다. git commit명령어를 통해 local repo상태로 변경할 수 있다.

local repo상태는 변경된 내용을 로컬저장소에 저장하고, 스냅샷을 만들어 파일들의 변화를 관리할 수 있게 해주는 상태를 말한다. git push를 통해 원격저장소에 로컬저장소 내용을 반영하거나, git pull을 통해 원격저장소의 내용을 로컬저장소에 반영할 수 있다.


📖 File Life Cycle

process flow 그림

working directory상태와 staing area상태를 좀 더 상세하게 표시하면 위의 사진처럼 표현할 수 있다.

untracked상태는 파일을 새로 생성했지만, 아직 관리 대상이 아님을 나타낸다. git add명령어와 git commit명령어로 로컬저장소에 저장을 확정지어야 unmodified상태로 변경되며 파일 추적의 대상이 된다.

unmodified상태는 로컬저장소에 저장되어 파일 추적의 대상이 된 상태를 말한다. 파일을 수정하면 modified상태로 변경된다.

modified상태는 추적 중인 파일의 변화가 감지될 때 대상이 변경된 상태임을 알려주는 상태이다. git add 명령어를 통해 staged상태로 변경시킬 수 있다.

staged상태는 로컬저장소에 변경된 내용을 확정짓기 전에 임시적으로 대상을 넣어놓은 상태를 말하며 상단 그림의 staging area와 같다. git commit명령어를 통해 로컬저장소에 저장하면 모든 대상 파일이 unmodified상태로 변경된다.

📚 Git 기본 사용법

📖 Git 설치

Window 사용자: https://gitforwindows.org/
Mac 사용자: https://git-scm.com/download/mac


📖 버전 확인

# git 버전 확인
$ git --version

git의 설치가 끝났다면, git --version 명령어를 통해 버전을 확인할 수 있다.
git 버전확인


📖 프로젝트 설정(init)

# 프로젝트 초기화 설정
$ git init

git init는 현재 디렉토리를 git을 통해 버전 관리하기 위해 초기화하는 명령어이다.

git init 명령어를 입력하면 .git 숨김 디렉토리가 생성되며, 이후부터 새로 생성한 파일과 기존에 추적하던 파일의 수정을 감지하여 관리할 수 있게 해준다.


📖 프로젝트 복사(clone)

# 프로젝트 복사
$ git clone [https주소 or ssh 주소]

git clone은 다른 사람이 만들어둔 프로젝트를 복사할 때 사용하는 명령어이다.

git init처럼 프로젝트를 초반에 설정하는 방법이 있다면, 기존에 진행중인 프로젝트를 공동 작업을 할 때엔 git clone을 사용한다.


📖 기본 환경설정(config)

# 유저 정보 설정
$ git config --global user.name 'github 유저이름'
$ git config --global user.email 'github 메일주소'

# 자동연결 editor 설정
$ git config --global core.editor "vim"

# 메시지 출력 설정
$ git config --global core.pager "cat"

# 개행문자 자동 변환 설정
$ git config --global core.autocrlf input(mac)
$ git config --global core.autocrlf true(window)

# 기본 브랜치명 수정 (master → main)
$ git config --global init.defaultBranch main

git config는 git의 환경설정을 할 때 사용하는 명령어이다.

--global은 git의 전역변수를 설정할 때 쓰는 옵션(=플래그)이다.
만약 현재 프로젝트(local)에서만 사용하고 싶다면, --global을 빼고 사용하면 된다.

$ git config --global --list

--list 플래그를 이용하여 --global로 설정한 git 전역변수 전체를 출력할 수 있다.

전역변수 출력

📖 원격저장소 연결 관리(remote)

# 현재 연결된 원격저장소의 내용을 모두 출력
$ git remote -v

# 원격저장소 연결
$ git remote add [원격저장소 별칭] [원격저장소 주소]
※ 일반적으로 원격저장소의 별칭은 origin을 사용한다.

# 원격저장소 연결 해제
$ git remote remove [원격저장소 별칭]

git remote는 원격저장소와 관련된 명령을 실행할 때 사용한다.


📖 파일 상태 확인하기(status)

# 파일 상태 추적
$ git status

git status는 새롭게 추가된 파일이나 기존에 추적 중이던 파일에 변화가 있었는지 등을 확인할 때 사용하는 명령어이다.

git status를 통해 File Life Cycle중 어느 단계에 속해 있는지 확인할 수 있다.


📖 파일 추가하기(add)

# 변경 파일 추가
$ git add .
$ git add [파일명]

git add는 새롭게 추가된 파일이나, 기존에 추적 중이던 파일을 추가할 때 사용한다.

working directory 상태에서 staging area 상태로 변경된다.

.는 현재 디렉토리 의미하는데, 사용할 경우 현재 디렉토리의 전체 파일을 추가한다. 문제는 실수로 불필요한 파일이나 바이너리 파일 등을 추가할 수 있으므로 가급적 사용을 자제하고, 필요한 파일을 직접 입력하는 것이 좋다.


📖 로컬저장소에 저장하기 (commit)

# 로컬저장소에 저장 확정
$ git commit
$ git commit -m "메시지 기록"

# 제일 최근에 저장한 commit 메세지 수정
$ git commit --amend

commit를 통해 로컬저장소에 staging area에 있는 임시 저장 파일들의 저장을 확정짓는다.


📖 로컬저장소 로그 확인 (log)

# 로컬저장소 로그 확인
$ git log

git log 명령어를 통해 로컬저장소에 현재부터 이전까지 저장된 내용을 확인할 수 있다.


📖 독립 작업하기 & 원격에서 브랜치 가져오기 (branch & checkout)

# branch의 현재 목록을 상세하게 출력
$ git branch -a

# branch 생성
$ git branch [브랜치명]

# branch 삭제
$ git branch -d [브랜치명]

# 현재 작업중인 branch 변경
$ git checkout [브랜치명]

# branch 생성과 동시에 현재 작업 branch로 변경
$ git checkout -b [브랜치명]

※ 최신 버전에선 checkout 대신 switch를 사용한다.

branch는 나뭇가지라는 의미로, 메인이 되는 줄기에서 뻗어나와 독립적으로 개발을 하거나 테스트 해볼 때 사용한다.

git branch를 통해 현재의 브랜치 목록도 확인할 수 있고, 필요에 따라서 만들 수도 있다.

main 브랜치를 주축으로 새로운 브랜치를 만들어 기능을 개발하고, 기능에 문제가 없으면 다시 main 브랜치에 합쳐가며 기능을 추가/개선/삭제 등을 할 수 있어 많이 쓴다.

git checkout은 현재 작업 중인 branch에서 다른 branch로 이동할 때 사용하는 명령어이다.

# 원격 저장소에서 브랜치 가져오는 방법
# 원격저장소의 branch의 목록을 상세하게 출력
$ git branch -r

# 원격 저장소의 브랜치를 로컬로 가져와주며, 현재 브랜치로 변경
$ git checkout -t [원격저장소/브랜치명] 
# 예시) git chekcout -t origin/purple

현업에서 Gitflow Workflow 방법을 많이 사용한다고 들었고 후에 이에 대한 내용도 공부하고 정리할 예정이다.

Gitflow Workflow 방법을 참고하기 좋은 블로그라고 한다.


📖 원격저장소에 저장하기 (push)

# 원격저장소에 로컬저장소의 내용 저장할 때
$ git push [원격저장소 별칭] [대상 브랜치]

git push는 현재 작업중인 프로젝트(=로컬저장소)의 내용을 원격저장소에 저장할 때 사용하는 명령어이다.


📖 원격저장소에서 가져오기 (pull)

# 원격저장소의 내용을 로컬저장소로 가져올때
$ git pull [원격저장소 별칭] [대상 브랜치]

git pull은 원격저장소의 내용을 현재 작업중인 프로젝트(=로컬저장소)에 반영할 때 사용하는 명령어이다.

profile
나를 위한 기록 저장소

0개의 댓글