본문 바로가기
Tool 사용, 리뷰

[Tool] 자주 사용하는 GIT 명령어 정리 #Bash

by jjongday 2024. 4. 5.
반응형

Clone

git clone 명령어는 복제할 repository 의 주소를 로컬 저장소에 복제해오는 작업이다. repository 를 복사해 오기 위해서는 repository 의 주소를 알아야 한다. 예시로 repository를 http://jjongday/SBCM_RL.git 이라고 가정하면 아래와 같이 입력하면 된다.

 

git clone http://jjongday/SBCM_RL.git

 

 

Checkout

git chechout 명령어는 프로젝트 기록의 특정 시점으로 repository 상태를 업데이트하는데 사용된다. 브랜치 이름과 함게 전달하면 브랜치 간에 전환이 가능하다. 예시로 jjonday_SBCM 브랜치로 이동하려면 아래와 같이 입력하면 된다.

 

git checkout "jjongday_SBCM"

 

 

Init

git init 명령어는 내 컴퓨터에서 생성한 디렉토리(폴더)를 Git에 등록하여 관리할 수 있도록 하는 명령어이다. 즉, 기존 디렉토리(폴더)를 로컬 저장소로 사용할 수 있도록 하는 것이다. 깃허브의 원격 저장소와 연결시키거나 새로운 저장소를 초기화하는 데 사용한다.

git init

 

Remote

git remote add origin 명령어는 init 명령어를 통해 로컬 저장소로 변환한 디렉토리(폴더)를 Github에서 원격으로 관리할 수 있도록 연결하는 명령어이다. Github에 디렉토리(폴더) 이름과 같은 원격 저장소를 생성하고, git remote add 명령어를 입력함으로 원격 저장소와 로컬 저장소가 연결이 완료된다. 예를 들어, 깃허브 계정이 jjongday이고, 연결할 repository 이름이 SBCM_RL 이라면, 다음과 같이 명령어를 입력한다.

git remote add origin <http://jjongday/SBCM_RL.git>

 

git remote -v 명령어는 연결된 원격 저장소를 확인하는 명령어이다. git remote add를 통해 다른 repository 와 하였다면, 아래 명령어를 통해 연결이 잘 되어있는지 확인한다.

git remote -v

 

Status

git status는 로컬 repository 의 변경된 사항이 있는지 상태를 보여주는 명령어이다. 원격 저장소의 상태와 변경된 로컬 저장소의 상태를 비교하여 상태를 나타낸다.

git status

 

Add

git add 명령어는 git에 등록하여 commit을 할 수 있는 상태로 만든다. 즉, Untracked files를 Staging area로 추가하여 git이 관리할 수 있도록 한다.

git add .
git add filename

 

git add . 명령어를 입력하면, 변경된 사항 모든 파일들을 등록한다.

이는 많은 파일을 변경했을 시 유용하지만, 불필요한 파일까지 모두 등록될 수 있기 때문에 주의해야 한다.

 

Restore

git restore는 변경사항을 폐기하는 명령어로 commit 또는 staged 되지 않은 변경 사항을 폐기한다.

즉, git add 명령어를 통해 등록하지 않은 파일들을 폐기시킬 수 있다.

git restore filename

 

Commit

git commit 명령어는 커밋이 가능한 파일들의 변경 사항을 저장하는 명령어이다. 즉, Staging area에 있는 변경된 파일들을 뜻한다. -m 옵션을 통해 커밋할 내용의 코멘트를 작성할 수 있으며, 쉽게 알아볼 수 있도록 변경 사항이나 커밋 날짜 등을 기입하여 커밋하는 것이 좋다.

git commit -m "커밋 메시지"

 

Reset

git reset는 commit 한 기록을 취소하여 수정하고 싶을 때 사용하는 명령어이다. 즉, git commit 명령어를 사용한 이후 에러가 발생하였다면 commit 한 기록을 reset 명령어를 통해 취소할 수 있다. 아직 Remote Repository에 올라가지 않은 commit일 경우에만 reset 명령어로 취소할 수 있다.

git reset HEAD^
git reset HEAD^^^
git reset HEAD3
git reset HEAD~1

 

추가적으로 hard, soft 옵션이 있다.

git reset --hard HEAD^
git reset --soft HEAD^

 

Push

git psuh는 Local에서 변경, commit 된 사항을 원격 저장소에 업로드하는 명령어이다.

git commit -m "커밋 메시지" 명령어를 통해 커밋을 했다면, 이를 깃허브 원격 리포지토리(Remote Repository)에 등록을 요청해야 한다.

git push
git push origin main(or master)
git push origin branch

 

깃허브에는 하나의 repository 를 여러 브랜치를 둘 수 있다. 메인 브랜치는 가장 중심이 되는 브랜치이며, 다른 브랜치는 메인 브랜치에 영향을 받거나 주지 않는 독립적인 형태로 존재할 수 있다. 따라서, 메인 브랜치에 push 할 수도 있고, 메인 브랜치에 영향을 주지 않는 다른 브랜치에 push 할 수도 있다.

 

Pull

git pull 명령어는 Remote Repository의 작업 내용을 가져오면서 병합 작업을 실행한다. git pull 명령어는 git fetch와 git merge를 실행한 결과로 나타낼 수 있다. 이는, Local Repository에 Remote Repository의 내용을 덮어 씌운다고도 할 수 있다. git pull 명령어의 주의할 점은 git fetch와 git merge 동작을 한 번에 수행하기 때문에, 여러 사람들과 협업을 진행할 시 충돌이 일어날 수 있으니 주의하자.

git pull
git pull origin main(or master)
git pull origin branch

 

Fetch

git fetch 명령어는 원격 저장소의 변경 사항을 가져오기만 한다. 이는 git pull과는 다르게 병합을 수행하지는 않는다. 따라서, 로컬 저장소의 작업과 적절하게 병합하여 사용할 수 있다. 만약, git push를 수행하였는데 거절당할 시, git fetch → git merge → git push를 하여 문제를 해결할 수 있기도 하다.

git fetch

 

Merge

git merge 명령어는 git fetch 명령어를 통해 원격 저장소의 변경 사항을 가져온 후 사용하여 로컬 저장소와 병합을 하기 위해 사용한다. 일반적으로 git push 또는 git pull을 통해 명령을 수행하지만, 일부 병합 문제로 인해 push가 안되거나, 안전하게 remote repository의 내용을 가져올 때 git fetch와 git merge를 사용한다.

$ git merge

 

Log

git log 명령어는 현재까지 commit 된 내역들을 터미널 창에 출력해주는 명령어이다. 명령어 실행 이후 로그 창에서 벗어나고 싶다면 q를 입력하면 된다.

$ git log

 

 

반응형