본문 바로가기
Git

git 사용방법과 명령어

by @hohoya33 2021년 03월 24일

Git이란 무엇일까? Git에 대한 내용과 자주 쓰이는 명령어에 대해 정리해보았다.

📢 Git이란?

Git은 버전관리시스템이다. Git을 이용하면 언제든지 저장 시점으로 되돌아갈 수 있다.

📢 Git의 특징과 설치방법

Git의 특징과 장점

  • Git은 빠르며, 분산형 저장소를 지원한다.
    -> 때문에 여러 명이 동시에 수정하는 환경에 적합하다.
  • 수천개의 동시 다발적인 branch가 가능하다.
  • 속도나 데이터 크기 면에서, 대형 프로젝트에 유용하다.

Git 설치하기

windows는 git-scm.com 에서 다운받고 설치하면 된다. 설치 후에는 user.nameuser.email의 설정을 해야한다. 이는 commit시 author과 committer의 메타데이터로 사용되기 때문이다.

git config --global user.name "Name"
git config --global user.email "Eamil"

📢 Git 저장소 만들기

Git 저장소를 만들어보자. git init현재 해당하는 디렉토리에 내가 작업을 진행하겠다! 라고 git에게 알려주는 것과 같다. 이는 .git이라는 하위 디렉토리를 만들고, 이 디렉토리에는 버전정보들이 전부 저장되어 있다.

  • git init : 기존 프로젝트를 git으로 관리하고 싶을 때
  • git init (directory path) : 새로운 dir을 생성하여 git 저장소를 만들 때
  • ls -al : 현재 폴더의 파일 목록 확인하기
    git으로 파일을 관리하려면 저장소에 파일을 추가(add), 커밋(commit, 여태까지 한 작업을 git db에 기록&저장)해야한다.

📢 Git 파일 관리 3단계

  • staged : Local DB에 저장하기 위해 등록해놓은 상태
  • commited : 데이터가 로컬 DB에 안전하게 저장된 상태
  • Modified : 수정한 파일을 아직 로컬 DB에 저장하지 않은 상태

📢 Git 명령어

git status - 파일 상태 확인

git status -s를 이용하여 각 파일의 상태를 확인해보자.

  • A : 파일을 add, 즉 staged한 상태로 추가한 파일 중 새로 생성한 파일을 말한다.
  • AM : 파일을 add한 후, 내용을 변경했으나 아직 add하지 않은 Staged면서 Unstaged인 상태를 말한다.
  • ?? : Local에 파일을 저장해놓긴 했으나 아직 add하지 않은 상태를 말한다.

git add - 파일을 staging영역으로 올리기

저장하고픈 파일들을 묶는 것을 stage에 파일 올리기 또는 add라고 한다. git add는 파일을 관리 대상으로 만들어주는 명령어로, 쉽게 말해 git에게 xx파일을 관리해줘!라고 말하는 것과 같다.
🚨 반드시 파일을 add해야만 commit할 수 있다.

  • git add (file path) : staging area에 추가할 파일을 지정할 때
  • git add -A : 수정된 모든 파일을 추가할 경우
    -> (실수를 줄이기 위해 각각의 파일을 add하는 것이 좋긴하다)

git commit - 파일 커밋하기

파일을 올린 후 git add를 하면 git은 바로 파일을 Staged상태로 만든다.
첫 파일을 add한 후 파일을 3번 수정하고 다시 commit을 하면, 3번 수정하기 전 상태의 파일이 commit된다. 즉, 마지막으로 git add 명령을 실행했을 때의 버전인 첫번째 파일(버전)이 커밋된다.

🚨 git add 명령을 실행한 후, 파일을 수정하면 git add를 다시 해주어야 최신 버전의 staged가 만들어지는 것이다.

  • git commit -m "어떤 변화가 있는지 작성"
    : 간단한 메시지를 남기며 커밋할 때
  • git commit -> i 자판 누르기 -> 커밋메시지 입력
    -> esc누르기 -> :wq누르고 enter
    : 여러 줄의 메세지를 남기며 커밋할 때

git diff - 파일의 변경된 점 확인하기

파일 내용이 변경된 경우, 변경된 내용을 확인하는 방법이다.
git diff를 사용하면 각각의 branch의 현재 상태를 비교할 수 있다.

  • git diff (commitA) .. (commitB)
    : 커밋A와 커밋B의 차이점을 비교
  • git diff -staged or git diff --cached
    : Staging Area에 넣은 파일의 변경 부분을 보고싶을 때 사용

git log - commit history 조회

  • git log : 현재 저장소의 시간순 commit history
  • git log -p : history와 diff 함께보기
  • git log -Number : history 개수 지정
  • git log -grep keyword : commit 메시지 조회
  • git log -online : muline으로 작성된 메시지 한줄로 표시하기

git branch - 다른 형상 만들기

branch는 잘 실행중이던 프로젝트를 건드리지 않은 채 새로운 기능을 추가, 실험하고 싶을 때 사용한다.
🚨 On branch master : git은 기본적으로 master branch를 생성하고, 최초로 commit을 하게 된 경우 자동으로 master라는 branch를 만든다. 최초이기 때문에 가장 마지막에 위치해있는 commit을 가리킨다.

  • git branch : branch 목록 확인
  • git branch (branch_name) : branch 생성하기
  • git branch -d (branch_name) : merge된 branch만 삭제
  • git branch -D (branch_name) : 해당 branch를 아예 삭제

git checkout - branch 변경하기

  • git checkout (branch_name) : 지정한 branch로 변경
  • git checkout -b (branch_name) : 새로운 branch 생성 후, 그 branch로 변경하기

branch를 변경하면 생기는 일

  1. index와 working dir의 파일들이 변경된 branch를 기준으로 switching되며, HEAD가 가리키는 branch가 변경된다.
  2. branch 변경 내역은 git log --branches --decorate --graph로 확인할 수 있다.

git merge - branch 합치기

ex1에서 작업한 내용을 main branch에도 갖게하고 싶다? 그렇다면 우선 ex1 branch에서 main branch로 checkout을 한 후, git merge ex1을 하면 자동으로 commit 메시지가 작성된다.

  • git merge (target_branch_name) : merge로 branch 합치기
    🚨 이 때, 코드가 반영될 branch(대부분 master)에서 merge를 수행해야 한다.

git remote - 원격저장소 command

  • git remote add (remote alias) (remote url) : 원격 저장소 추가
  • git remote -v : 원격 저장소 목록 확인

git push - 원격 저장소에 넣기

commit을 하면 현재 작업 내용의 save data가 내 컴퓨터에 저장된다. 만약 컴퓨터가 고장나게 되면, commit한 data들도 전부 날라가게 되므로 commit 후 GitHub에 업로드하는 것이 좋다.

  • git push : 현재까지 commit한 것들을 전부 올려준다.

git clone - 이미 존재하는 저장소 받아오기

GitHub에 이미 생성되어있는 repository를 내 Local로 가져와보자. 해당 repository가 내 local에 생성되는 것을 확인할 수 있다.

  • git clone (repository_url) : 해당 repository를 내 local로 가져온다.

git fetch, pull - 원격 저장소 변경내용 가져오기

remote 변경 사항을 가져오는 방법은 2가지가 있다.
1. git fetch (remote) (remote_branch)
: 원격 저장소의 변경사항을 가져와서 원격 브랜치를 갱신한다.
2. git pull (remote) (remote branch) : (local branch)
: git fetch에서 하는 원격 저장소의 변경사항을 가져와서, 지역브랜치에 합치는 작업을 한번에 한다.

git mv - 폴더명 변경하기

실수로 폴더명을 잘못 설정했거나, 부득이하게 폴더명을 수정해야하는 경우가 있을 수도 있다. 그 때 사용하는 명령어이다.
git mv 변경전폴더명 변경을원하는폴더명을 입력한 후 아무 결과도 뜨지 않으면 변경에 성공한 것이다. 이를 다시 GitHub에 올려주어야 하니 commit -m "change the folder name"이런 식으로 commit 메시지를 작성해준 후 push까지 진행하면 된다.

개의 댓글