git 명령어 정리
- git : 버전관리(VCS:version control system) 목적의 소프트웨어, Distribute(분산) VCS환경, 원격저장소를 로컬에 복제
- github : 원격저장 서비스(MS가 인수)
- git Bash : 윈도우OS에서 Git을 위한 명령어(리눅스)를 실행하기 위한 커맨드창
< 로컬저장소의 3개 영역 >
1. Working Directory : 폴더 그 자체
⇣ git add
2. Staging Area(Index Area) : 준비영역(임시 저장) commit할 객체를 생성(SnapShot)함, SnapShot 등록
⇣ git commit
3. Head : 최종 확정본, SnapShot 저장됨, 마지막 커밋 SnapShot
명령어 | 설명 | 예시 |
git init | 로컬저장소 만들기 | working directory 생성 후 git 초기화 (master or main 브랜치 생성) |
git help | git 명령어 간단 설명 | git add --help git help add (add에 대한 설명링크 브라우저 띄움) git add -h (add에 대한 설명을 git bash상에 띄움) |
git status | 현재 관리 상태 | git status 파일명 (파일명의 관리 상태) git status (현재 폴더의 관리 상태) |
git add | staging 영역으로 추가 | git add . (모든 파일을 add) git add 파일명 (파일을 add) |
git commit | Head 영역으로 추가 | git commit (vim에디터가 뜸) git commit -m "commit message" |
git log | commit log 보기 | git log (한 화면단위로 노출, 키보드 q는 빠져나감) git log --oneline (커밋로그 축약 보기) git log --oneline --graph --all (그래프로 보기, 브랜치 로그 포함) git log -n 2 (최신의 2개만 보겠다) git log --author="사용자name" (사용자이름 필터링 보기) git log --grep="특정단어" (특정 단어 필터링 보기) |
git show | commit log 상세보기 | git show (변경된 내용까지 확인) git show 로그식별자번호 (commit hash값) git show head^ (최신커밋의 바로 전 버전) git show head^^ (최신커밋의 2개 전, ^는 1개의 로그) git show head~3 (최신커밋의 3개 전) |
git rm | remove 삭제 | git rm --cache 파일명 (staging 영역에서 파일을 제거하겠다. working directory에는 남아있음) git rm 파일명 (working directory의 실제 파일삭제, 단 commited된 파일만 삭제가능, staging영역에 있는 파일은 삭제 안됨, 파일이 삭제됨과 동시에 삭제상태가 스테이지에 add 된다. ) git rm -f (commited되지 않아도 staging되어있는 상태에서도 강제로 실제 파일삭제) |
git restore | 내용 복구 | git restore 파일명 (내용은 이전상태로 복구되고 커밋정보는 그대로 유지) git restore --source=hash값 파일명 (특정 로그로 복구) |
git reset | HEAD를 특정hash로 복원. 특정 로그 이후의 로그 커밋을 삭제 | - git reset --hard hash값 (HEAD를 조정하고, 해당 hash값의 working directory도 복구) |
git commit --amend | 이전 커밋로그로 내용을 합침. | git commit --amend -m "commit message" |
git reflog | 삭제된 정보를 포함한 모든 commit 로그 보기, 복구도 가능 |
git reflog (*reference log) |
git tag | 특정 hash에 식별가능한 문자를 추가함 보통은 version을 표기 tag명으로 reset 가능 |
git tag v1.0.0 git tag 태그명 hash : 특정 hash에 태그 달기 |
vim에디터
- 입력모드 바꾸기 : 키보드 a 입력 ==> Insert 모드로 변경
- 명령모드 바꾸기 : 키보드 esc 입력, :wq!(write and quit), 엔터
< Branch >
명령어 | 설명 | 예시 |
git branch | branch 목록 조회 | git branch (브랜치명 조회) git branch -vv (로컬브랜치와 연결된 원격브랜치명 확인) |
git branch dev1 | dev1 브랜치 생성 | |
git switch dev1 | dev1 브랜치로 이동 | git checkout dev1로도 가능 |
git merge dev1 | 현재 브랜치에서 dev1을 병합 부모에서 개별브랜치로 병하는 것이 좋다. |
fast-forward merge (부모 브랜치에서 변경된 사항이 없는 경우) : 새로운 커밋없이 Head 이동 3-way merge (각 브랜치에서 커밋이 일어난 경우) : 새로운 커밋이 만들어지며 Head 이동 |
git branch -d dev1 | dev1 브랜치 삭제 | |
git diff | 차이점 difference 확인 | git diff master dev1 (master,dev1 비교) git diff hash hash (로그와 로그 비교) git diff --staged (stage와 head비교) |
git stash | 커밋 전에 작업을 스택에 잠깐 저장해둠 | |
git remote | 원격저장소 관련 | git remote -v: 원격 저장소 목록 상세 조회 git remote add 원격브랜치명 원격URL(원격URL에 원격브랜치명으로 원격저장소를 등록) git remote set-url 원격브랜치명 원격URL (재설정) git remote remove 원격브랜치명 (원격브랜치 연결 삭제) git remote rename A B (원격브랜치명 A를 B 이름으로 변경) |
git push -u remote명 브랜치명 | git push -u origin master (master branch를 origin에 push) | |
git pull remote명 브랜치명 | 원격브랜치의 변경사항을 가져오고 병합함 | |
git fetch | remote의 정보를 가져와서 별도의 브랜치로 저장되고, 로컬과 비교후 받을지 말지 판단 후 받을 거면 merge 명령 (diff and merge) |
원격브랜치의 변경 사항을 가져오되 현재 로컬 브랜치에 병합하지 않을 때 fetch를 사용 |
git config |
--system, --global, --local 3가지 | git config --system --unset credential.helper => 저장되어있는 git 인증서 모두 초기화 (관리자권한) (--global, --local 모두 동일 수행) git config user.name (보기) git config user.name 사용자명 (사용자명으로 설정) |
- .gitignore : 언트랙킹할 파일목록 정의 파일
- git config : git 설정파일, 로컬에 설정한 것이 우선
1. system (C:/Program Files/Git/etc/gitconfig ) : 관리자권한, 모든 사용자와 모든 저장소에 적용되는 설정
2. global (사용자/.gitconfig) : 한 user의 모든 저장소
3. local (./git/config) : 개별 프로젝트 설정
< git 생성 및 원격 연동 >
0. 로컬 작업 파일 생성
1. git init (초기화)
2. git config user.name 사용자명 (local user.name 설정)
3. git config user.email 사용자@email.com (local user.email 설정)
4. git remote add 리모트네임 리모트유알엘
5. git add .
6. git commit -m "message"
7. git push -u <리모트네임> <브랜치네임>
8. git pull <리모트네임> <브랜치네임>
< github >
- github 호스팅 : settings - pages - github pages
- github 인증키 토큰 발급 : 프로필 - settings - developer settings - personal access tokens - generate new token
- Contributors(기여자) : 프로젝트를 fork해서 프로젝트에 기여하고자 하는 사람, 프로젝트에 직업 push할 권한은 없다.
- Collaborator(협업자) : private 프로젝트라면 관리자가 협업자를 등록
- Pull Request(PR) => merge 요청서
- issue : 이슈게시판
- project : 상황판
- 인증정보 포함한 remote url 형식: https://username(아무거나):토큰키@giturl(https주소,https://지우고붙임)