상세 컨텐츠

본문 제목

Git 핵심 정리! 깃/깃허브의 개념과 핵심 명령어들 총집합

개발

by 호박너구리의 블로그 2020. 5. 6. 09:08

본문

1. Git 개념

 

깃 설치

1) 맥

: brew설치 후, brew install git으로 설치

2) 윈도우

: 깃 홈페이지에서 다운로드

 

 

깃 개본 개념

1) 레포지토리 (repository)

: 프로젝트 디렉토리 내에 .git 이라는 디렉토리가 만들어지는데, 그곳이 레포지토리 커밋이 저장되는 곳

2) 커밋

: 프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위 및 결과물

 

 

리포지토리 만들기

1) 폴더를 만든 후 그 안에서 git init 실행 (안에 .git 생김)

 

 

커밋하기 전에

: 깃에게 commit한 사람을 알려주기 

1) git config user.name "이름"

2) git config user.email "이메일"

 

 

커밋하기

1) 커밋할 파일 지정

git add "파일이름" (git add . 하면 변경된 모든 파일 지정)

2) 커밋메시지

git commit -m "커밋메시지"

 

 

깃의 세 가지 작업영역

1) working directory

: 작업을 하는 프로젝트 디렉토리

2) staging area

: git add한 파일들이 존재하는 영역 (커밋하면 이 영역의 파일들만 커밋에 반영)

3) repository

: working directory의 변경 이력들이 저장되어 있는 영역 (.git 디렉토리)

 

 

파일의 두 가지 상태

1) untracked : 깃에 의해 추적되고 있지 않은 상태 (파일 생성 후 git add 안하면)

2) tracked

(a) staged : 파일이 수정되고 나서 staging area에 올라오는 상태

(b) unmodified : 현재 파일 내용이 최신 커밋과 같을 때 (커밋하고 난 직후의 파일)

(c) modified : 최근 커밋과 비교해서 바뀐 내용이 있는 상태

 

 

깃허브 시작하기

1) 계정 생성 후 create repository

: 깃허브에서 만든 repo를 원격 리포지토리/remote repository라고 함, 본인 컴퓨터의 repo를 local repository라고 부름 

2) 적혀있는 코드 복붙하기

: git remote add origin [주소]

> remote(리모트에 관한 작업하겠다), add(새로운 리모트 레포지토리를 등록하겠다), origin 주소 (뒤 주소의 리모트 레포를 origin이라는 이름으로 등록하겠다)

: git push -u origin master

> -u (--set-upstream이라는 옵션의 약자), 로컬 레포에 있는 master branch가 origin에 있는 마스터 브랜치를 추적하는 것으로 설정, 이러한 tracking connection이 설정되고 나면 git push, git pull 이라고만 써도 됨

 

 

기타 깃허브

* 리모트 레포리토리 쓰는 이유

: 안정성 & 협업가능성

* 깃허브에 본인 외에 코드를 반영하기 위해서는 setting에서 초대하여 수락해야 함

* 다른 프로젝트 가져오기 

: 우측 상단부근의 clone or download

: 주소 복사 후 부모 디렉토리로 가서 git clone [주소]

 

 

깃에서 커밋 보기

* git log (커밋 히스토리 보기)

: 커밋 뒤의 긴 문자는 커밋아이디(커밋해시)

: 커밋 한 사람, 날짜 및 시간, 커밋 메시지 확인 가능

 

 

HEAD의 의미

: 특정 커밋을 가리킴 (보통 가장 최근의 커밋)

: 최상단의 working directory는 HEAD가 가리키는 커밋에 따라 구성

: 헤드가 다른 commit 가리키면 working directory내부도 다르게 보임

> checkout이 헤드를 변경하는 작업인 것 (HEAD -> branch -> working directory)

> 머지는 헤드가 가리키던 커밋에 다른 브랜치가 가리키는 커밋을 합쳐서 새로운 커밋을 만드는 작업인 셈

 

 

머지의 종류

1) Fast-Forward merge

2) 3-way merge

 

 

새로운 브랜치에 remote 올리기

> git push --set -upstream origin "새브랜치명"

 

 

깃 리셋하면 커밋들은 사라질까

: 아니다! git reflow [ref log] 하면 헤드가 이제까지 가리켜온 커밋들을 보여준다

: 그 중 원하는 커밋으로 다시 reset 가능

 

 

깔끔한 커밋 히스토리를 원한다면

: git rebase [브랜치] 사용

> 현재 브랜치의 베이스를 테스트 브랜치로 재지정한다는 뜻

> add 이후에 커밋 X

> git rebase --continue : conflict로 진행 멈춘것을 재진행

> 머지와의 차이 : 리베이스는 새로운 커밋을 만들지 않음 / 리베이스로 만들어진 커밋 히스토리가 좀 더 깔끔


2. Git 명령어

* git init : 현 디렉토리를 working directory로 설정하고 그 안에 레포지토리(.git) 생성

 

* git config user.name "honu" : 현재 사용자 아이디를 'honu'로 설정

 

* git config user.email "honu@a.b" : 현재 사용자 이메일을 'honu@a.b'로 설정

 

* git add [파일명] : 바뀐 것이 있는 해당 파일을 staging area에 올림 (디렉토리명이면 내부의 모든 파일 해당)

 

* git add . : working directory 내의 바뀐 것이 있는 모든 파일을 staging area에 올리기

 

* git reset [파일명] : staging area에 올렸던 파일 취소

 

* git status : 현재 프로젝트 관련 내용들 출력

 

* git commit -m "커밋메시지" : 현재 staging area에 있는 것들을 커밋으로 남기기

 

* git help [커맨드 이름] : git 커맨드의 공식 매뉴얼 출력

 

* git push -u origin master : 로컬 레포지토리의 내용을 처음으로 원격 repo에 올릴 때 사용

 

* git push : local repository의 내용을 remote repository에 보내기

 

* git pull : remote repository의 내용을 local repository로 가져오기

 

* git clone [깃허브 주소] : github에 있는 프로젝트를 본인 컴퓨터로 가져오기

 

* git log : 커밋 히스토리

 

* git log --pretty=oneline : 커밋 하나당 한 줄로 히스토리 출력

 

* git show [커밋/태그 아이디] : 특정 커밋에서 어떤 변경사항이 있었는지 확인

 

* git commit --amend : 최신커밋을 수정하여 새로운 커밋으로 만듦

 

* git config alias.[이름] [커맨드] : 해당 커맨드를 git [이름] 만으로 실행할 수 있도록 설정

 

* git diff [커밋A아이디] [커밋B아이디] : 두 커밋 간 차이 비교

 

* git tag : 태그 조회하기

 

* git tag [태그이름] [커밋아이디] : 특정 커밋에 태그를 붙임

 

* git reset [옵션] [커밋아이디] : 옵션에 따라 HEAD가 특정 커밋을 가리키거나(--soft), staging area도 특정 커밋처럼 리셋하거나(--mixed), working directory까지 특정 커밋처럼 리셋한다(--hard) / 커밋아이디 대신 HEAD^, HEAD~3 등의 방식도 가능

 

* git branch [브랜치 이름] : 새로운 브랜치 생성

 

* git checkout -b [브랜치 이름] : 새로운 브랜치 생성 후 바로 이동

 

* git branch -d [브랜치 이름] : 기존 브랜치 삭제

 

* git checkout [브랜치 이름] : 기존 다른 브랜치로 이동

 

* git merge [브랜치 이름] : 현재 브랜치에 해당 브랜치를 합침

 

* git merge --abort : merge를 하다가 conflict가 발생했을 때 취소하고 돌아감

 

* git fetch : 로컬 repo에서 현재 HEAD가 가리키는 브랜치의 upstream branch로부터 최신 커밋들을 가져옴

 

* git blame : 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지 출력

 

* git revert : 특정 커밋에서 이루어진 작업을 취소하는 커밋을 새로 생성 (여러개 한 번에 할 수도 있음)

 

* git stash : 작업 내용을 임시로 저장

 

* git stash list : 임시로 저장된 작업 내용을 조회

 

* git stash apply [?작업 내용의 아이디] : 생략하면 가장 최근의 작업 내용이 적용됨

 

* git stash drop [?작업 내용의 아이디] : 생략하면 가장 최근의 작업 내용이 삭제됨

 

* git stash pop : 기존 리스트의 임시저장 내용 적용과 동시에 스택에서 제거됨

 

* git cherry-pick [커밋아이디] : 필요한 커밋만 가져옴

728x90

관련글 더보기

댓글 영역