Clone
git clone 명령어는 복제할 리포지토리의 주소를 로컬 저장소에 복제해오는 작업이다. 리포지토리를 복사해 오기 위해서는 리포지토리의 주소를 알아야 한다.
$ git clone 리포지토리 주소
리포지토리 주소는 http://계정/리포지토리이름.git 형태로 되어 있다.
예를 들어 깃허브 계정이 gildong이고, 복제할 리포지토리 이름이 git-bash라면, 다음과 같이 명령어를 입력하여 clone 한다.
$ git clone <http://gildong/git-bash.git>
Init
git init 명령어는 내 컴퓨터에서 생성한 디렉토리(폴더)를 Git에 등록하여 관리할 수 있도록 하는 명령어이다. 즉, 기존 디렉토리(폴더)를 로컬 저장소로 사용할 수 있도록 하는 것이다. 깃허브의 원격 저장소와 연결시키거나 새로운 저장소를 초기화하는 데 사용한다.
$ git init
Remote
git remote add origin 명령어는 init 명령어를 통해 로컬 저장소로 변환한 디렉토리(폴더)를 Github에서 원격으로 관리할 수 있도록 연결하는 명령어이다.
Github에 디렉토리(폴더) 이름과 같은 원격 저장소를 생성하고, git remote add 명령어를 입력함으로 원격 저장소와 로컬 저장소가 연결이 완료된다.
예를 들어, 깃허브 계정이 gildong이고, 연결할 리포지토리 이름이 git-bash라면, 다음과 같이 명령어를 입력한다.
$ git remote add origin <http://gildong/git-bash.git>
git remote add 명령어는 다른 사람의 원격 저장소와 사용자의 원격 저장소를 연결하는 명령어다. remote add를 활용하여 함께 작업할 동료와 연결할 수 있다.
예를 들어, 함께할 동료의 계정이 hello-git이고, 연결할 리포지토리 이름이 git-bash라면, 다음과 같이 명령어를 입력한다.
git remote add hello-git <http://hello-git/git-bash.git>
git remote -v 명령어는 연결된 원격 저장소를 확인하는 명령어이다. git remote add를 통해 다른 리포지토리와 하였다면, 아래 명령어를 통해 연결이 잘 되어있는지 확인한다.
git remote -v
Status
git status는 로컬 리포지토리의 변경된 사항이 있는지 상태를 보여주는 명령어이다.
$ git status
원격 저장소의 상태와 변경된 로컬 저장소의 상태를 비교하여 상태를 나타내는데, Staging area와 Untracked files 목록을 확인할 수 있다. untracked files은 git의 트래킹 되고 있지 않은 파일들을 뜻한다. 즉, 로컬 리포지토리 내에 존재는 하지만, git의 관리를 받지 못하고 있는 파일이다.
modified에는 변경된 파일들을 나타내 준다.
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
깃허브에는 하나의 리포지토리를 여러 브랜치를 둘 수 있다. 메인 브랜치는 가장 중심이 되는 브랜치이며, 다른 브랜치는 메인 브랜치에 영향을 받거나 주지 않는 독립적인 형태로 존재할 수 있다.
따라서, 메인 브랜치에 push 할 수도 있고, 메인 브랜치에 영향을 주지 않는 다른 브랜치에 push 할 수도 있다.
메인 브랜치는 master 단어의 이슈가 있기 전엔 master가 메인 브랜치였다. 따라서 지금 새로 리포지토리를 생성하면 모두 main 브랜치이나, 과거에 생성한 브랜치가 있다면, git push origin master 명령어를 사용해야 할 수도 있다.
Pull
git pull 명령어는 Remote Repository의 작업 내용을 가져오면서 병합 작업을 실행한다. git pull 명령어는 git fetch와 git merge를 실행한 결과로 나타낼 수 있다. 이는, Local Repository에 Remote Repository의 내용을 덮어 씌운다고도 할 수 있다.
$ git pull
$ git pull origin main(or master)
$ git pull origin branch
만약, 협업하는 동료가 gildong이라 가정하고, 동료의 작업 내용을 자신의 로컬 리포지토리에 가져오면서 병합을 하고자 한다면 다음과 같이 사용할 수 있다. 만약, 동료의 main 브랜치가 아닌 다른 브랜치에서 가져오고자 한다면, main 대신 branch이름을 적으면 된다.
$ git pull gildong main(or master or branch)
git pull 명령어의 주의할 점은 git fetch와 git merge 동작을 한 번에 수행하기 때문에, 여러 사람들과 협업을 진행할 시 충돌이 일어날 수 있다.
Fetch
git fetch 명령어는 원격 저장소의 변경 사항을 가져오기만 한다. 이는 git pull과는 다르게 병합을 수행하지는 않는다. 따라서, 로컬 저장소의 작업과 적절하게 병합하여 사용할 수 있다.
$ git fetch
만약, git push를 수행하였는데 거절당할 시, git fetch → git merge → git push를 하여 문제를 해결할 수 있기도 하다.
Merge
git merge 명령어는 git fetch 명령어를 통해 원격 저장소의 변경 사항을 가져온 후 사용하여 로컬 저장소와 병합을 하기 위해 사용한다.
$ git merge
일반적으로 git push 또는 git pull을 통해 명령을 수행하지만, 일부 병합 문제로 인해 push가 안되거나, 안전하게 remote repository의 내용을 가져올 때 git fetch와 git merge를 사용한다.
Log
git log 명령어는 현재까지 commit 된 내역들을 터미널 창에 출력해주는 명령어이다. 명령어 실행 이후 로그 창에서 벗어나고 싶다면 q를 입력하면 된다.
$ git log
'데브옵스(DevOps) > Git & Github' 카테고리의 다른 글
[Git / Github] 깃의 스테이징 영역과 상태 정리 (add, commit, push의 상태 대하여) (0) | 2022.08.27 |
---|---|
[Git / Github] 풀 리퀘스트 정리 (PR: Pull Request) (0) | 2022.08.27 |
[Git / Github] 깃허브 클론 (clone) 하는 방법 (깃허브 리포지토리 로컬로 복사) (2) | 2022.08.27 |
[Git / Github] 포크 (Fork) 하는 방법 (오픈 소스 프로젝트 복제하기) (0) | 2022.08.27 |
[Git / Github] 깃허브 CLI 사용을 위한 인증 방법 (+ 설치 방법) (0) | 2022.08.27 |