일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 구조체
- c# 윈폼
- github
- dart 언어
- gitlab
- git
- vim
- 유니티
- c# 추상 클래스
- C++
- 포인터
- Flutter
- docker
- Data Structure
- 다트 언어
- Python
- jupyter
- 깃
- C# delegate
- C언어 포인터
- jupyter lab
- HTML
- 플러터
- Houdini
- 도커
- c#
- c# winform
- c언어
- Algorithm
- Unity
Archives
- Today
- Total
nomad-programmer
[VCS/Git] 명령어 목록 본문
git은 다양한 명령어를 지원한다. 구글에서 'git cheat sheet' 등의 검색어로 검색하면 많이 찾을 수 있다.
git은 파일을 세 가지 작업 영역으로 관리한다. 이러한 가상의 공간 구분을 염두에 두고 살펴보면 몇몇 명령어들의 의미가 더욱 명확해진다.
- Working Directory : 저장소가 추적 중인 파일들이 위치하는 영역이다.
- Staging Area : 커밋할 준비가 된 (staged) 파일들이 위치하는 영역이다.
- Repository : 커밋되어 버전을 관리하는 파일들이 위치하는 영역이다. 이 영역의 파일이 수정되면 Working Directory 영역으로 이동된다.
위의 작업 영역에 관한 개념을 염두에 두고 명령어들을 이해하면 한결 쉽다.
설정하기
명령어 | 설명 |
git config --global user.name <"이름"> | Git에서 커밋할 때 기록하는 이름 설정 |
git config --global user.email <"이메일"> | Git에서 커밋할 때 기록하는 이메일 설정 |
git config --global --add merge.ff false | Git에서 merge명령을 실행할 때 "fast-forward" 옵션을 false로 주는 설정. 즉 "--no-ff (no fast-forward)" 옵션을 따로 설정하지 않아도 적용이 되게끔 하는 설정 |
저장소 생성
명령어 | 설명 |
git init <저장소 이름> | 명령을 실행한 위치에 <저장소 이름>으로 저장소를 만듦 |
git clone <저장소 주소> | <저장소 주소>의 원격 저장소를 클론 |
변경 내역 다루기
명령어 | 설명 |
git status | 저장소의 상태를 확인. 추적하지 않은 파일, 추적 중이지만 변경되어 커밋해야 하는 파일 등을 보여줌. |
git diff | 마지막 커밋과 현재 변경된 내용을 비교해 보여줌. |
git add <파일 이름> | 버전 관리를 하기 위한 파일 추적을 시작. stage에 add를 하는 것 |
git reset <파일 이름> | 변경 내역이 생겨서 git add 명령을 실행해 커밋할 준비가 된 파일을 Staging 영역에서 제거. 파일의 변경 내역은 보존 |
git commit -m <"커밋 설명 메시지"> | git add 명령을 실행해 커밋할 준비가 된(staged 상태인) 파일을 로컬 저장소에 <커밋 설명 메시지>로 설명을 입력해 커밋 |
브랜칭
명령어 | 설명 |
git branch | 저장소에 있는 브랜치 목록을 보여줌 |
git branch <이름> | <이름>으로 브랜치를 만듦 |
git checkout <브랜치 이름> | <브랜치 이름>으로 현재 작업 중인 브랜치를 변경한다. |
git merge <브랜치 이름> | 현재 작업 중인 브랜치에 <브랜치 이름> 브랜치를 가져와 병합 |
git branch -d <브랜치 이름> | <브랜치 이름> 브랜치를 삭제 |
추적 중인 파일 삭제와 변경
명령어 | 설명 |
git rm <파일 이름> | 저장소에서 버전 관리 중인 파일을 삭제. 그와 더불어 실제 로컬 파일도 사제. 삭제 기록이 저장소에 남는다. |
git rm --cached <파일 이름> | 저장소에서 버전 관리 중인 파일만 삭제. 로컬 파일은 그대로 남는다. |
git mv <파일 이름> <변경될 파일 이름> | 저장소에서 버전 관리 중인 파일의 이름(혹은 경로)을 변경. 변경 기록이 저장소에 남는다. |
커밋하지 않은 상태로 임시 보관
명령어 | 설명 |
git stash | Staged 상태에 있는 커밋되지 않는 변경 내역을 stash 라는 임시 공간에 저장 |
git stash pop | stash에 마지막으로 저장된 변경 내역을 현재 브랜치에 적용 |
git stash list | stash에 저장된 변경 내역의 목록을 출력 |
git stash drop | 마지막으로 저장된 변경 내역을 삭제 |
내역 살펴보기
명령어 | 설명 |
git log | 현재 브랜치의 버전 내역을 출력 |
git log --follow <파일 이름> | 파일의 변경 내역들을 출력. 파일 이름의 변경까지 포함한 내역을 출력 |
git diff <브랜치> ... <다른 브랜치> | 대상이 되는 두 브랜치 사이의 파일들을 비교해 다른 점을 출력 |
git show 커밋 | 대상 커밋의 메타데이터와 변경 내역을 출력 |
커밋 취소하기
명령어 | 설명 |
git reset <커밋> | 대상 커밋 이후에 생긴 모든 커밋을 취소. 하지만 커밋과 함께 변경된 내역은 로컬 저장소에 남겨둔다. |
git reset --hard <커밋> | 대상 커밋 이후에 생긴 모든 커밋과 변경 내역을 대상 커밋 시점으로 되돌림 |
원격 저장소와 동기화
명령어 | 설명 |
git fetch <원격 저장소이름> | 원격 저장소의 모든 변경 내역을 로컬 저장소에 다운로드 |
git merge <원격 저장소이름/브랜치이름> | 원격 저장소의 대상 브랜치를 현재 작업 주인 브랜치에 병합 |
git push <원격 저장소이름> <브랜치이름> | 로컬 브랜치의 모든 커밋을 원격 저장소의 대상 브랜치에 업로드 |
git pull <원격 저장소이름> | git fetch와 git merge 명령을 차례로 실행하는 것과 같은 명령. 즉 git fetch <원격 저장소이름> 명령과 git merge <원격 저장소이름/현재브랜치> 명령을 실행한 결과와 같다. |
'VCS > Git' 카테고리의 다른 글
[VCS/Git] gitlab-flow : 모바일 앱과 게임 개발 환경에 권장 (0) | 2019.12.06 |
---|---|
[VCS/Git] github-flow : 웹 애플리케이션 개발 환경에 권장 (0) | 2019.12.05 |
[VCS/Git] git-flow : 게임이나 SI 개발 환경에 권장 (2) | 2019.12.05 |
[VCS/Git] 프로젝트 유형별 협업 흐름 (0) | 2019.12.05 |
[VCS/Git] 프로젝트를 위한 협업 준비 규칙 (0) | 2019.12.05 |
Comments