- Published on
Git 기본 명령어
[Git] 기본 명령어
가장 많이 사용되고 있는 VCS(버전 관리 시스템)인 Git의 기본 명령어에 대해 알아보겠습니다
Git은Bash를 통한CLI환경과SourceTree,Gitkraken등을 사용한GUI환경이 있습니다.
이번 포스터에서는Bash를 통한CLI환경에서의 사용법을 알아보겠습니다.
init
git init 명령어 입력하면 Git 저장소로 지정됩니다. Git 저장소로 지정되면 .git 폴더가 생성되고 여기에 git history가 쌓이게 됩니다.
.git 폴더를 삭제 하면 git history가 모두 날라가게 되어 기존 내역이 모두 없어지게 되므로 주의하시기 바랍니다.
Git명령어는Git 저장소내에서만 사용이 가능합니다.
remote
git remote add <alias> <HTTPS | SSH>:GitHub(원격저장소)Repository를 지정할 수 있습니다.- 추후
git push <alias> <branch>명령어를 통해GitHub(원격저장소)에 파일을 등록할 수 있습니다.
- 추후
git remote remove <alias>: 해당GitHub(원격저장소)Repository에 대한 정보를 삭제합니다.git remote -v | --verbose: 현재 등록된GitHub(원격저장소)정보를 볼 수 있습니다.
clone
git clone <HTTPS | SSH> [폴더 명] 명령어를 통해 GitHub(원격저장소) Repository를 내려받을 수 있습니다.
[폴더 명]: 생략 시, 현재 폴더 안에Repository명으로 폴더가 생성되며 해당 폴더 안에 파일들이 받아집니다.[폴더 명]자리에.입력 시, 해당 폴더에 파일들이 받아집니다.
SSH의 경우 GitHub(원격저장소)에 SSH 연결 작업을 한 뒤, 사용 할 수 있습니다.
clone의 경우remote정보가 자동으로 등록되어 있습니다.
status
git status 명령어를 통해 Untracked와 Modified 파일들의 상태를 확인할 수 있습니다.
add
git add [파일 명] 명령어를 통해 해당 파일을 Staged 상태 (commit이 가능한 상태)로 변경할 수 있습니다.
git add .: 현재 폴더 이하의Untracked및Modified상태의 파일(사실상 모든 파일)을Staged상태로 변경합니다.git add -u | --update:Modified상태의 파일들만Staged상태로 변경합니다.git add -p | --patch: 각 파일마다 변경된 점을 확인 후 상태를 결정 할 수 있습니다.
.은.gitignore파일에 있는 것은 제외하는 반면,*은.gitignore에 있는 것도 포함 합니다.즉,
git add .을 사용하는 것이 더 좋습니다.
restore
git restore [파일 명] 명령어를 통해 Modified 상태의 파일을 Unmodified 상태로 되돌릴 수 있습니다.
git restore .: 현재 폴더 이하의Modified상태의 파일을Unmodified상태로 되돌립니다.git restore --staged:Staged상태의 파일을Unstaged상태로 변경합니다.
Unmodified상태가 되면 수정된 내용이 없다는 뜻이 되므로, 수정 됐던 내용은 지워집니다.
commit
git commit 명령어를 통해 Staged 상태인 파일들을 저장할 수 있습니다.
git commit -a:Modified상태에 있는 파일들을add후commit을 한번에 실행합니다.- 단,
Untracked상태의 파일들에 대해서는add를 별도로 해야 합니다.
- 단,
git commit -m "설명": 해당commit에 대한 설명을 작성할 수 있습니다.git commit -am "설명":-a와-m을 합친 것입니다.git commit --amend: 이전commit에 덮어쓰기 합니다.
log
git log 명령어를 통해 commit된 내역들을 볼 수 있습니다.
--abbrev-commit:commit hash를7자리로 줄여 보여줍니다.--stat: 얼마나 변경 되었는지 요약하여 보여줍니다.-p | --patch: 어떤 변경 사항이 있었는지 내용을 보여줍니다.--grep: 해당 문자열이 포함된 내역을 찾습니다.--grep "찾을문자열"
-<n>: 최근 내역으로부터n개만 보여줍니다. 보고 싶은limit만큼 숫자를 주면 됩니다.-1: 최근 1개
--since:yyyy-MM-dd hh:mm:ss형식으로 해당 날짜 이후 커밋 기록을 보여줍니다.0am처럼 입력 시,당일 12am부터 커밋 기록을 보여줍니다.--since="2022-02-06 00:00:00"또는--since="12am"처럼 사용할 수 있습니다.
push
git push <remote> <branch> 명령어를 통해 GitHub(원격 저장소)에 커밋 기록을 올릴 수 있습니다.
-u | --set-upstream:-u옵션을 붙여서 한 번push하게 되면, 이후에는git push만 입력해도-u옵션을 붙였을 때의remote와branch로push됩니다.-f | --force:GitHub(원격 저장소)의 커밋 기록을 무시하고 현재 로컬에서의 커밋 기록을 강제로push합니다.- 한 번 내역이 사라져버리면 되돌릴수 없기 때문에, 자신만의
branch에서만 사용하는 것이 좋습니다. (매우 주의)
- 한 번 내역이 사라져버리면 되돌릴수 없기 때문에, 자신만의
git push origin main
origin은 위에 remote 설정에서 사용한 alias이며, alias대신 주소를 풀로 적어도 됩니다.main은 GitHub에서 Repository생성 시, 기본적으로 생성되는 branch입니다.
push전에pull을 받아 커밋 기록 동기화하지 않으면 충돌이 날 수 있으므로, 꼭pull을 한 뒤,push를 해야합니다.
pull
git pull <remote> <branch> 명령어를 통해 GitHub(원격 저장소)의 커밋 기록을 받아와 현재 내용과 병합합니다.
-u | --set-upstream:-u옵션을 붙여서 한 번pull하게 되면, 이후에는git pull만 입력해도-u옵션을 붙였을 때의remote와branch로pull됩니다.-f | --force: 로컬의 커밋 기록을 무시하고GitHub(원격 저장소)에서의 커밋 기록으로 강제로pull합니다.- 한 번 내역이 사라져버리면 되돌릴수 없기 때문에, 주의해서 사용 해야 합니다. (매우 주의)
git pull origin main
origin은 위에 remote 설정에서 사용한 alias이며, alias대신 주소를 풀로 적어도 됩니다.main은 GitHub에서 Repository생성 시, 기본적으로 생성되는 branch입니다.
fetch
git fetch <remote> <branch> 명령어를 통해 GitHub(원격 저장소)의 커밋 기록을 받아옵니다.
pull 명령어와 유사하지만, 차이점은 기록은 받아오지만 현재 내용과 병합하지 않는다는 점입니다.
내려받아서 조금 더 신중하게 변경 사항 확인 후
병합하고 싶을 때 사용합니다.