- 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
명령어와 유사하지만, 차이점은 기록은 받아오지만 현재 내용과 병합
하지 않는다는 점입니다.
내려받아서 조금 더 신중하게 변경 사항 확인 후
병합
하고 싶을 때 사용합니다.