Git

[Git/Github] 협업하기 위한 필수 git 명령어 정리 (+ 자잘한 개념 정리)

Chae-ri🍒 2024. 12. 31. 17:43

버전 관리 방법

1. 혼자서 버전 관리

2. 다른 사람과 버전 관리

 

다른 사람과 버전 관리

1. 직접 서버를 구성

2. SaaS 서비스 이용 - 외부 컴퓨터에서 데이터를 저장하여 버전을 관리하는 것(ex. Github)

*외부 컴퓨터가 날아간다면? => 각각 개별의 로컬에 버전이 백업되어 있기 때문에 복구 가능(Git의 분산 시스템 방식)

 

*git과 github의 차이는?

git - 분산 버전 관리를 위한 도구 및 시스템

github - Git 저장소를 호스팅하는 클라우드 기반 플랫폼. 즉, 데이터를 저장할 수 있는 외부 컴퓨터라고 보면 됨

 

파일의 네 가지 상태

Tracked - .git이 추적 중인 파일(commit 가능)

Untracked - .git이 추적 중이지 않은 파일(commit 불가능)

modified - 변경 내역이 발생한 파일(commit 가능)

unmodified - 변경 내역이 발생하지 않은 파일(commit 불가능)

 

스테이징(Staging)

git에서 변경된 파일을 커밋하기 위해 커밋할 대상인 작업 파일들을 잠시 staging 영역으로 이동시키는 것

 

git 명령어 정리

git init

git 로컬 저장소 생성 및 초기화

명령어 실행 시 현재 경로에 .git/ 이라는 숨김 폴더 생성

.git/ 폴더를 삭제할 경우, 모든 작업 내역에 대한 추적이 끊기기 때문에 주의해야 함!

 

git config

git 환경 설정 및 사용자 정보 등록

git과 관련된 메타 정보, 환경 설정 등을 관리할 때 사용하는 명령어다.

누가 어떤 작업을 수행했는지 확인하기 위해 사용자 정보를 등록할 때 주로 사용한다.

git config --list  => 현재 등록된 정보들 조회(key=value 형태)
git config --global user.email  => github 가입 시 사용한 이메일 주소 입력
git config --global user.name  => github 가입 시 사용한 username 입력

 

 

git status

현재 작업 디렉토리의 상태 확인

현재 작업 중인 브랜치와 commit할 내역 등 확인할 수 있다.

 

git add

새롭게 생성한 파일을 git에게 추적 및 관리하도록 지정 or

기존에 추적하던 파일의 변경 사항을 커밋하기 위해 스테이징(staging 영역에 추가)

git add .  => 변경된 전체 파일 대상
git add 파일명  => 해당 파일 대상

 

git commit

현재까지의 작업 내역을 하나의 기록으로 저장(스테이징된 파일을 저장소에 기록)

git commit -m "작업 내용 설명"

 

git log

현재까지 수행된 과거의 모든 Commit 기록 확인

git log --oneline  # 커밋 내역을 한 라인으로 요약해서 조회
git log --graph    # 커밋 내역을 그래프 형태로 조회

 

git restore

스테이징 영역에 추가된 파일 취소하기

git restore 파일명  # 파일 복원
git restore --staged 파일명  # 스테이징에서 제거

 

git checkout

다른 브랜치로 이동하거나 특정 커밋으로 이동

git checkout main        # 메인 브랜치로 이동
git checkout feature     # 새 브랜치 생성 및 이동

 

git diff

커밋 내역끼리 차이점 비교하기

git diff --staged # 스테이징과 저장소 비교
git diff 커밋해시값..커밋해시값

 

git remote

로컬 저장소에 원격 저장소 연결

git remote add origin 레포 주소
git remote -v  # 원격 저장소 확인

 

git push

로컬 커밋을 원격 저장소로 업로드

git push origin main  # main 브랜치를 원격으로 푸시

 

git clone

원격 저장소를 로컬로 복제

git clone 레포 주소

 

git fetch

원격 저장소에서 최신 변경사항을 가져옴(병합은 하지 않음)

 

git merge

원격 저장소의 변경 사항을 로컬 저장소에 반영

git merge feature  # feature 브랜치를 현재 브랜치에 병합

 

git pull

fetch + merge를 한 번에 수행(변경 사항을 가져오고 병합)

git pull origin main

 

git branch

브랜치를 생성하거나 확인

git branch         # 현재 브랜치 목록 보기
git branch 브랜치명  # 새 브랜치 생성

 

git stash

현재 작업 중인 변경사항을 임시 저장

git stash           # 변경사항 저장
git stash pop       # 저장된 변경사항 복원

 

git rebase

브랜치의 커밋 이력을 재정렬하여 깔끔하게 유지

git rebase main  # 현재 브랜치를 main 위에 재정렬

 

git cherry-pick

특정 커밋만 선택적으로 다른 브랜치에 적용

git cherry-pick <commit-hash>

 

git blame

특정 파일의 변경 내역과 작성자 확인

git blame 파일명

 

git... 명령어 많다...! gui에 너무 익숙해졌으니.. cli 연습을 많이 해보자💪🏻

728x90