Published on

Git의 개념 및 명령어 정리

Authors
  • Name
    라이브러리 기술블로그
    Twitter

Git이란 무엇인가: Git의 개념 및 명령어 정리

개인적인 개발에서 그치지 않고, 효율적인 공동 개발을 위한 코드 형상 관리를 가능하게 해주는 도구, Git에 대해 알아봅시다.

git

Git의 영역

  • Working Directory (Local) 이 곳에서는 개인적으로 코드를 작성합니다.
  • Staging 영역 git add 명령어를 통해 수정된 코드를 올리는 영역입니다.
  • Repository git commit 명령어를 통해 최종 수정본을 제출하는 공간입니다.

Git 작업 플로우

우선 터미널에 git을 설치합니다. 리눅스 (Ubuntu) 기준으로 설치하려면 아래와 같이 입력하면 됩니다.

$sudo apt install git-all

(1) 저장소(Repository) 생성

원하는 폴더 안에서 아래와 같이 입력하면 됩니다.

$git init

또는 기존 github에 있는 저장소를 내 로컬로 복제할 수도 있습니다.

$git clone (git 저장소의 URL)

(2) 코드 생성 (in Working directory)

이 예제에서는 README.md 파일에 "Hello, Git!"라는 문자열을 작성해보겠습니다.

$echo "Hello, Git!" > README.md

생성한 내용을 확인하려면 아래와 같이 입력하면 됩니다.

$cat README.md
Hello, Git!

(3) Staging 영역에 추가

코드 수정이 완료되면 staging 영역에 추가합니다.

$git add .

위 명령어를 통해 현재 디렉토리에 있는 모든 업데이트된 파일을 스테이징 영역에 추가할 수 있습니다. 아래와 같이 입력하면 수정된 파일 전부를 스테이징 영역에 추가할 수 있습니다.

$git add -A

현재 add 내역을 확인하려면 아래와 같이 입력하면 됩니다.

$git status

(4) Repository에 commit

$git commit -m "feat: README.md update"

-m 은 메세지의 약자이고, 뒤에 ""안에 공유할 메시지 내용을 적어주면 됩니다.

(5) 원격 저장소에 push, 업데이트 된 내용은 pull

내 local 디렉토리로부터 원격저장소(Remote repository)로 보내기 위해서는 push 명령어를 사용합니다. 그 전에 원격 저장소와 내 로컬을 연결해야 합니다.

원격 저장소 연결 (github)

$git remote add origin (원격 저장소 github URL)

origin은 remote repository의 이름이며, 다른 이름으로 설정해도 무방합니다.

push

$git push origin master

origin이라는 원격저장소의 master 브랜치 (브랜치는 뒤에서 설명)에 푸쉬합니다.

최근에는 깃헙에서 메인 브랜치이름을 master가 아닌 기본으로 main 으로 해놓았습니다. 따라서 브랜치를 바꾸고, 바꾼 브랜치로 push 해주시면 됩니다. (브랜치 관련 명령어는 밑에 더 나옵니다.)

$git branch -M main
$git push origin main

pull

또한 다른 사람이 원격 저장소(Remote repository)에 업데이트한 파일이 있을 때, 원격저장소와 내 로컬저장소의 상태를 동일하게 만들기 위해 pull을 이용합니다.

$git pull

이 외에 알아두면 좋은 git 명령어들이 있습니다.

(6) 커밋 이력 확인

$git log

또는 한 줄로 요약해서 보고 싶은 경우 아래와 같이 입력하면 됩니다.

$git log --oneline

(7) 파일변경시 (Working directory → Staging) 내역 확인 및 취소

현재 디렉토리에 README.md 가 있다는 가정하에, 이 파일에 다른 내용을 적어 업데이트하고, 무엇이 바뀌었는지 확인해봅니다.

파일 내용 변경

$echo "update test" >> README.md

내용 변경 확인

$ cat README.md
Hello, Git!
update test

변경 내용 확인

$git diff

staging 취소 (unstage)

$git reset

또는

$git reset --hard

working directory 까지도 변경전 상태로 되돌림 즉, 변경한 내용이 소멸되므로 주의

(8) commit 정리

여러개의 commit을 하나의 commit으로 정리

$git rebase -i