DEV/Git

[Git 기초] Git Bash 기본 명령어

Bi3a 2023. 10. 18. 15:54

목차
반응형

git bash 기본 명령어 정리
git bash 기본 명령어에 대해 알아봅시다.

 

git의 흐름
Git의 흐름과 구조

 

Git 용어 정리

  • 구성요소
    • 워크스페이스(workspace) : 작업폴더
    • 인덱스(Index) : Git의 장바구니 개념(add으로 추가, unstage로 삭제)
    • 로컬 리포지토리(local repository): 로컬 저장소(git init을 통해 등재된 작업폴더 내부의. git 폴더)
    • 원격 리포지토리(remote repository) : 원격 저장소(github의 리포지토리 주소, .git으로 끝납니다) 
  • 명령어
    • 추가(add) : 작업폴더에 있는 파일을 인덱스에 저장
    • 언스테이지(unstage) : Git의 인덱스에 담겨 있는 파일을 제거
    • 커밋(commit) :  Git의 인덱스에 담겨 있는 파일을 로컬 리포지토리에 저장
    • 체크아웃(checkout) : Git의 커밋된 타임라인과 해당 내용으로 돌아가는 것

 

Git Bash 명령어

1. 디렉터리 이동 관련

  • `clear` : Git bash 창 초기화
  • `ls` : 디렉터리에 있는 파일 조회
  • `ls -a` : 디렉토리에 있는 파일(숨김폴더 포함) 조회
  • `ls -al` : 디렉토리에 있는 파일 + 수정 이력까지 조회 
  • `cd "디렉토리명"` : 해당 디렉터리로 이동
  • `cd..` : 상위 디렉터리로 이동
  • `pwd` : 현재 디렉토리 위치 확인

 

2. 로컬 저장소 및 브랜치 지정 관련

  • `git init` : 현 디렉터리를 로컬 저장소(리포지토리)로 생성합니다.(. git 파일 생성)
  • `rm -rf. git` : 현 디렉터리를 로컬 저장소(리포지토리)에서 해제합니다.(. git 파일을 삭제)
  • `git branch` : 현 디렉터리에 연결되어 있는 브랜치를 확인합니다. (연결되어 있지 않으면 출력되지 않음)
  • `git checkout -b "브랜치명"` :  브랜치명의 브랜치를 생성합니다.
  • `git checkout "브랜치명"` : 해당 브랜치명의 최신 커밋버전으로 전환합니다.
  • `git branch -d "브랜치명"` : 해당 브랜치명의 브랜치를 삭제합니다.
    • 브랜치 삭제를 위해서는 사전에 타 브랜치명의 브랜치로 전환이 요구됨
  • `git config --global init.defaultBranch` : 현재 PC의 디폴트 브랜치를 확인합니다.
  • `git config --global init.defaultBranch "브랜치명"` : 현재 PC의 디폴트 브랜치 이름을 브랜치명으로 변경합니다.
    • 기존에 생성되어 있었던 리포지토리의 브랜치는 변경되지 않으니 유의

 

3. 디렉터리 내 파일 및 디렉토리 생성 관련

  • `touch "파일. 확장자명"` : 현재 디렉터리에 있는 해당 명의 파일을 생성합니다.
  • `mkdir "디렉토리명"` : 현재 디렉터리에 있는 해당 명의 디렉토리를 생성합니다.
  • `rm -rf "파일명` : 현재 디렉토리에 있는 해당 명의 파일을 삭제합니다.
  • `rm -rf *` : 현재 디렉토리에 있는 모든 파일을 삭제합니다. (. git 파일 포함)
    • `*`: 와일드카드, 경로 내의 모든 파일을 뜻합니다.

 

4. 로컬 워크스페이스 ~ 로컬 리포지토리 간 작업 관련

  • `git status` : Git의 로컬 저장소(. git)의 최근 상태와, 작업 폴더의 상태의 차이를 조회합니다.
  • `git add "파일명"` : 해당 파일을 Git의 인덱스에 추가합니다.
  • `git add.` : 해당 경로에 있는 모든 파일을 Git의 인덱스에 추가합니다.
  • `git rm --cached "파일명"` : 해당 파일을 Git의 인덱스에서 제거(unstage) 합니다.
  • `git reset` : Git의 인덱스에 있는 모든 파일을 제거(unstage) 합니다.
  • `git log` : 커밋 이력 열람(작성자와 커밋 일자)
  • `git log --oneline` : 커밋 이력을 간략하게 조회합니다.
  • `git commit` : 인덱스에 있는 파일을 커밋 (vim으로 화면 넘어감)
  • `git commit -m "text"` : 인덱스에 있는 파일을 커밋 (vim이 아닌 간략하게 텍스트를 기재해 커밋할 때 사용)
  • `git checkout "로그명"` : 해당 로그명이 커밋된 파일 버전으로 돌아갑니다.
  • `git checkout "브랜치명"` : 가장 최근에 커밋된 해당 브랜치명의 최신 버전으로 다시 돌아갑니다.  
    • 디렉터리에서 커밋되지 않은 변경사항이 있을 때는 돌아갈 수 없습니다.
  • `git reset --soft "로그명"` : 해당 로그 파일 버전으로 돌아갑니다. 이후 커밋 이력과 인덱스는 남아있습니다.
  • `git reset --hard "로그명"` : 해당 파일 파일 버전으로 돌아갑니다. 이후의 커밋 이력과 인덱스는 전부 삭제됩니다.

 

5. 로컬 리포지토리 ~ 원격 리포지토리 간 작업 관련

  • `git remote -v` : 현재 연결되어 있는 원격 리포지토리 목록을 조회합니다.
  • `git remote add "별명" "원격 리포지토리 주소"` : 해당 주소를 현재. git의 원격 리포지토리로 등록합니다.
    • 한 개의. git 파일에 여러 개의 원격 리포지토리 등록이 가능합니다.
    • 로컬 리포지토리와 가장 많이 연관되는 원격 리포지토리는 `origin` 으로 통칭됩니다.
    • ex) `git remote add origin "https://github.com/Bisi3asi/DemoRepository.git"`
  • `git push "원격 리포지토리명" "브랜치명"` : 현재 로컬 저장소의 브랜치를 해당 원격 리포지토리로 업로드합니다.
    • 해당 원격 저장소에도 동일한 브랜치가 생성됩니다. 
    • ex) `git push origin main` : 현재 로컬 저장소 main 브랜치를 origin 원격 리포지토리로 업로드합니다.
  • `git pull "원격 리포지토리명" "브랜치명"` : 원격 리포지토리로 등록된 origin에 있는 main 브랜치 내용을 현재 로컬 리포지토리의 메인 브랜치로 다운로드합니다.
    • `git pull "원격 리포지토리명" "브랜치명 --allow -unrelated-histories"` : 신규로 만든 로컬 리포지토리를 기존에 있는 원격 리포지토리와 연결할 때 사용합니다. 
      • 신규 프로젝트는 기존 프로젝트와 공통적으로 같은 조상을 보고 있지 않아 다른 프로젝트로 인식하기 때문,
      • 따라서 병합을 위해 --allow -unrelated-histories 사용
  • `git clone "원격 저장소 주소".` : 현재 디렉터리를 로컬 저장소로 만들고 해당 원격 저장소와 연결시키며, 원격 저장소에 있는 모든 내용을 현재 지정한 디렉터리에서 만든 로컬 저장소로 복사해 옵니다.
    • `git clone == git init + git remote add origin + git pull origin main`
  • `git config --global user.name` : 현재 PC의 사용자 이름 확인(깃허브 연동 ID)
  • `git config --global user.name "ID"` : 현재 PC의 사용자 이름 추가(깃허브 연동 ID)
  • `git config --global user.email` : 현재 PC의 사용자 이메일 확인(깃허브 연동 이메일)
  • `git config --global user.email "USER_EMAIL"` : 현재 PC의 사용자 이메일 추가(깃허브 연동 이메일)

 

시나리오 1 : 다른 PC에서 기존 원격저장소를 연결하는 로컬 저장소 생성 세팅

java
닫기
# 1. 사용자 이름, 이메일 설정
git config --global user.name "USER.NAME"
git config --global user.email "USER.EMAIL"
# 2. 작업 디렉토리 설정
mkdir my_project
cd my_project
# 3. 기존 원격 저장소 복제
git clone "GITHUB.REPOSITORY.URL"
# 4. (선택) 업데이트 내용 pull
git pull
# 5. (선택) 로컬 브랜치 변경
git checkout -b "BRANCH.NAME"
# 6. (선택) 기존 브랜치 전환
git checkout "ORIGINBRANCH.NAME"
# 7. (선택) 원격 저장소 연결 확인
git remote -v

 

Git Bash 기본 단축키

  • `Ctrl + Insert` : 복사
  • `Shift + Insert` : 붙여 넣기
  • `Ctrl + C` : vim, 서버 구동 등의 화면에서 콘솔 입력 창으로 복귀

 

유의사항

  • 기본적으로 빈 폴더는 Git에서 취급하지 않는다. add도 안 올라간다. (Git의 정책으로 인해)
    • 단, . gitkeep 파일 설정을 통해 폴더명을 추가할 시 빈 폴더 또한 Git에 추가가 가능하다.
    • .gitkeep 파일은 빈 디렉터리를 유지함으로써 프로젝트의 구조를 명확하게 할 수 있다.
  • . gitignore에 특정 파일명을 추가함으로써 파일의 내용이 변경되어도 git의 인덱스에 추가되는 것을 방지할 수 있다.
    • 개인 환경마다 설정이 변경되어야 하는 파일, 프로젝트와 관계없는 파일 등 목적에 맞게 설정이 가능하다.
반응형