Published on

Git 기본 명령어

[Git] 기본 명령어

가장 많이 사용되고 있는 VCS(버전 관리 시스템)인 Git의 기본 명령어에 대해 알아보겠습니다

GitBash를 통한 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 명으로 폴더가 생성되며 해당 폴더 안에 파일들이 받아집니다.
  • [폴더 명] 자리에 . 입력 시, 해당 폴더에 파일들이 받아집니다.
GitHub Clone

SSH의 경우 GitHub(원격저장소)에 SSH 연결 작업을 한 뒤, 사용 할 수 있습니다.

clone의 경우 remote 정보가 자동으로 등록되어 있습니다.

status

git status 명령어를 통해 UntrackedModified 파일들의 상태를 확인할 수 있습니다.

add

git add [파일 명] 명령어를 통해 해당 파일을 Staged 상태 (commit이 가능한 상태)로 변경할 수 있습니다.

  • git add .: 현재 폴더 이하의 UntrackedModified 상태의 파일(사실상 모든 파일)을 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 상태에 있는 파일들을 addcommit을 한번에 실행합니다.
    • 단, Untracked 상태의 파일들에 대해서는 add를 별도로 해야 합니다.
  • git commit -m "설명": 해당 commit에 대한 설명을 작성할 수 있습니다.
  • git commit -am "설명": -a-m을 합친 것입니다.
  • git commit --amend: 이전 commit에 덮어쓰기 합니다.

log

git log 명령어를 통해 commit된 내역들을 볼 수 있습니다.

  • --abbrev-commit: commit hash7자리로 줄여 보여줍니다.
  • --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옵션을 붙였을 때의 remotebranchpush 됩니다.
  • -f | --force: GitHub(원격 저장소)의 커밋 기록을 무시하고 현재 로컬에서의 커밋 기록을 강제로 push합니다.
    • 한 번 내역이 사라져버리면 되돌릴수 없기 때문에, 자신만의 branch에서만 사용하는 것이 좋습니다. (매우 주의)
git push origin main

origin은 위에 remote 설정에서 사용한 alias이며, alias대신 주소를 풀로 적어도 됩니다.
mainGitHub에서 Repository생성 시, 기본적으로 생성되는 branch입니다.

push 전에 pull을 받아 커밋 기록 동기화하지 않으면 충돌이 날 수 있으므로, 꼭 pull을 한 뒤, push를 해야합니다.

pull

git pull <remote> <branch> 명령어를 통해 GitHub(원격 저장소)의 커밋 기록을 받아와 현재 내용과 병합합니다.

  • -u | --set-upstream: -u옵션을 붙여서 한 번 pull하게 되면, 이후에는 git pull만 입력해도 -u옵션을 붙였을 때의 remotebranchpull 됩니다.
  • -f | --force: 로컬의 커밋 기록을 무시하고 GitHub(원격 저장소)에서의 커밋 기록으로 강제로 pull합니다.
    • 한 번 내역이 사라져버리면 되돌릴수 없기 때문에, 주의해서 사용 해야 합니다. (매우 주의)
git pull origin main

origin은 위에 remote 설정에서 사용한 alias이며, alias대신 주소를 풀로 적어도 됩니다.
mainGitHub에서 Repository생성 시, 기본적으로 생성되는 branch입니다.

fetch

git fetch <remote> <branch> 명령어를 통해 GitHub(원격 저장소)의 커밋 기록을 받아옵니다.

pull 명령어와 유사하지만, 차이점은 기록은 받아오지만 현재 내용과 병합하지 않는다는 점입니다.

내려받아서 조금 더 신중하게 변경 사항 확인 후 병합 하고 싶을 때 사용합니다.


참고 사이트