반응형
Git이란?
Git은 분산 버전 관리 시스템으로 소스 코드 관리와 변경사항 추적을 위해 사용 될 수 있다. 분산 모델로 병렬 작업이 가능하고, 오프라인 상태로 로컬작업도 가능하다. 호스팅을 지원하는 서비스로 Github, Gitlab이 대표적이다.
Git init
# git 저장소 생성
git init
Git status
# git 상태(branch, changed, staging, untracked) 표시
git status
# 상세정보
git status -sb
Git clone
# Git 저장소를 복사하여 생성
git clone <Repository URL>
# 경로지정하여 생성
git clone <Repository URL> <경로>
Git config
# .git/config 설정
git config
# user.name 설정
git config user.name "Name"
# user.email 설정
git config user.email "email@example.com"
# credential.helper 설정: credential 인증 유지
## cache - 15분 저장
## store - 반영구적 저장
git config credential.helper [cache|store]
Git remote
# 연결된 원격저장소 확인
git remote
# 원격저장소 추가
git remote add <원격저장소> <Repository URL>
# 원격저장소 이름 변경
git remote rename <로컬 원격저장소> <바꾸려는 원격저장소>
# 연결된 원격저장소 제거
git remote remove <원격저장소>
Git branch
# 로컬 브랜치 목록
git branch
# 원격 브랜치 목록
git branch -r
# 로컬/원격 브랜치 목록
git branch -a
# 현재 로컬브랜치 이름변경
git branch -m <변경할 브랜치 이름>
# 로컬브랜치 이름변경
git branch -m <로컬브랜치> <변경할 브랜치 이름>
# 로컬 브랜치 안전삭제
## 현재브랜치에 병합되지 않은 커밋 존재하는 경우 거부
git branch -d <로컬브랜치>
# 로컬 브랜치 강제삭제
git branch -D <로컬브랜치>
# 원격 브랜치 참조만 제거
## 로컬에 참조된 원격브랜치에서만 제거
git branch -d <원격저장소>/<원격브랜치>
# 추적브랜치(upstream) 변경
git branch -u <원격저장소>/<원격브랜치>
# 추적브랜치 확인
git branch -vv
Git checkout
# 로컬브랜치 전환
git checkout <브랜치>
# 원격브랜치와 동일한 이름의 로컬브랜치 생성 후 전환
git checkout <원격저장소>/<브랜치>
# 로컬브랜치 생성 후 전환
git checkout -b <브랜치>
# 원격브랜치를 추적하는 로컬브랜치를 생성 후 전환
git checkout -b <branch> <원격저장소>/<branch>
Git add
# 특정 변경사항을 staging 영역으로
git add <파일|디렉토리>
# 모든 변경사항(추가/수정) staging 영역으로
git add .
# 변경사항(추가/수정/삭재) staging 영역으로
git add -A
# 변경사항(수정/삭제) staging 영역으로
git add -u
Git commit
# 스테이징 영역 변경사항 커밋
git commit -m <커밋메시지>
Git push
# 현재 로컬브랜치를 원격브랜치로 푸시
git push
# 로컬브랜치를 원격브랜치로 푸시
git push <원격저장소> <로컬브랜치>
# 강제 푸시(원격 브랜치 보호 안함, 히스토리 삭제)
git push --force
# 강제 푸시(원격 브랜치 보호, 히스토리 삭제)
git push --force-with-lease
# upstream 브랜치 설정
git push -u <원격저장소> <원격브랜치>
# 원격브랜치 강제삭제
git push <원격저장소> -d <원격브랜치>
Git log
# git 로그 출력
git log
# commit ID, 타이틀 한 줄로 출력
git log --onelie
Git reset
- --soft: 커밋내용을 스테이징에 남김
- --mixed: 커밋내용을 변경사항에 남김
- --hard: 커밋내용 중 tracked 파일 삭제(untracked는 변경사항에 남음)
# 커밋 히스토리를 초기화
git reset --[soft|mixed|hard]
# 특정 커밋까지 초기화
git reset <커밋ID> --[soft|mixed|hard]
Git clean
- -f(--force): 삭제 기본옵션
- -d: 디렉토리 포함 삭제
- -n: 삭제될 파일 미리보기
# 변경사항 중 추적되지 않는(untracked) 항목 삭제
git clean -[f][d][n] [파일|디렉토리]
Git merge
# <브랜치>로 현재 브랜치를 병합(merge commit 생성)
git merge <브랜치>
Git rebase
# 특정 브랜치를 대상 브랜치의 최신 커밋 이후로 재배열 한다.
git rebase <브랜치>
Git fetch
# 원격저장소(remote)의 최신내용 가져오기
git fetch [원격저장소]
Git pull
# 원격저장소(remote)의 최신내용 가져와서 로컬에 병합
git pull [원격저장소] [브랜치]
Git subtree
- --prefix: 서브 프로젝트를 넣을 디렉토리 경로
# 서브트리 추가
git subtree add --prefix <디렉토리> <Repository URL> <브랜치>
# 서브트리 병합
git subtree merge --prefix <디렉토리> <Repository URL> <브랜치>
# 서브트리 분리
git subtree split --prefix <디렉토리> --branch <분리할 브랜치>
# 서브트리 업데이트
git subtree pull --prefix <디렉토리> <Repository URL> <브랜치>
# 서브트리 변경사항 푸시
git subtree push --prefix <디렉토리> <Repository URL> <브랜치>
반응형
'Git' 카테고리의 다른 글
| Git Tracking 파일명 대소문자 변경하기 (0) | 2025.06.26 |
|---|
