[GIT] GIT 내용 정리

튜토리얼

code -> stage (commit 전 대기) -> repository (commit 후)

한글튜토리얼

프로젝트(레파지토리) 폴더 생성

git init

git status

git add [관리할파일명]

git config –global user.name [유저이름]

git config –global user.email [이메일]

이걸 하지 않고 진행하는 경우 --global to set the identity only in this repository 매세지가 보이게됨

git commit

만약 윈도우10에서 git commit 실행시 vim으로 실행 -> 안되는 경우 다음 코드 실행 : git config --global core.editor vim

vim 이 실행되었을 때 commit message를 작성

git log

git add [업데이트할파일명]

처음 추가할 때도, 버전 업 할 때도 add를 사용함

git log -p

자세한 내용 출력

git log [commitID]

해당 id 이전만 보여줌

git diff [begin commit id] [end commit id]

git diff [begin commit id]..[end commit id]

해당 id 구간만 보여줌

git diff

현재 작업 중인 (commit 전) 변경 사항을 보여줌

git reset [commit id] –hard

commit을 삭제하고 이전 commit으로 최신화 하고 싶음

만약 --hard를 안했다면 git diff로 변경사항이 보이고, git reset --hard 하여 바꿀수 있음

--soft 등의 옵션도 존재함

과거로 되돌리는 것(돌아가는 이전까지 모든 내역이 사라짐)

**server로 push 하기 전이라면 reset**
git revert [commit id]

이전 log로 돌아가면서 새로운 버전을 만드는 것

특정 사건을 없었던 일로 만드는 것(돌아가는 이력까지 log로 남음)

server로 push 한 후라면 revert

git commit -help

도움말

git commit -a

git commit –all

git add 없이 바로 stage area에 업로드

단, 기존에 add 해둔 파일들만 가능 (새로운 파일은 add 해야함)

git commit -m [“코멘트”]

git commit –message [“코멘트”]

코멘트 바로 넘김

git commit -am [“코멘트”]

-a, -m 옵션을 동시에 (즉 여러 옵션을 연달아 나열할 수 있음)

Ref.

git branch

현재 브랜치 리스트 확인

git branch [브랜치 이름]

현재 기준 새로운 브랜치 생성

git checkout [브랜치 이름]

브랜치 변경

git checkout -b [브랜치 이름]

현재 기준 새로운 브랜치 생성하고 바로 전환

git branch [브랜치 이름]

git checkout [브랜치 이름]

git branch -d [브랜치 이름]

브랜치 삭제

git branch -D [브랜치 이름]

병합하지 않은 브랜치를 강제 삭제

git log –branches –graph

모든 브랜치의 로그를 보여주며(브랜치 이름을 보여주며), 그래프처럼 앞에 수직 라인으로 연결관계를 보여줌

git log –branches –graph –oneline

모든 브랜치의 로그를 보여주며(브랜치 이름을 보여주며), 그래프처럼 앞에 수직 라인으로 연결관계를 보여줌

각 브랜치를 한줄로 요약함

git log [브랜치1]..[브랜치2] 브랜치1에 없지만 브랜치2에 있는 걸 보여줌

git diff [브랜치1]..[브랜치2] 내용 차이를 비교해줌

git checkout master master 브랜치에 다른 브랜치를 병합(merge)하려면 git merge [다른브랜치] vim 창이 뜨면서 comment 입력 가능

merge 시에 충돌이 발생한 경우 git status 로 충돌이 난 파일을 확인하여 수정 후 commit 하면 됨

stash

현재 브랜치의 작업중인 내용을 commit 하지 않고 stage에 임시로 저장하는 것

버전관리 되고 있는 파일/폴더만 해당 (즉, tracked files만)

WIP (working in process; 작업중)

git stash apply

stash 했던 내역을 다시 작업 할 때

git stash list

임시 작업 목록을 보여줌

git reset –hard HEAD

현재 작업 중인 것을 최신 commit 버전으로 복구함

단, stash 내용가지 날라가진 않음

git stash drop

가장 최근 stash 를 삭제

git stash pop

git stash apply ; git stash drop

위 두개 명령과 동일

HEAD

현재 checkout한 브랜치의 최신 commit을 알려줌

git init [저장소이름]

하위 디렉토리로 repository 생성

git init -bare remote [저장소이름]

하위 디렉토리로 작업은 불가능하고 저장만 가능한 repository 생성 (수정 불가능)

git remote add [원격저장소별명] [원격저장소경로]

원격 저장소 연결

git remote -v

원격 저장소 목록

git config –global push.default simple

원격 저장소에 업로드 하는 방식을 결정, simple (선택한 파일만) or defalut (알아서)

git push –set-upstream origin master

origin에 master 브랜치를 업로드하도록 지정

git push

원격 저장소로 업로드

git site에서 fork 하게 되면 해당 저장소를 내 계정으로 가져옴

git clone [복제하려는원격저장소주소] [저장소이름]

복제하려는 원격저장소를 현재 디렉토리의 하위 저장소로 가져옴

만약 이미 저장소 디렉토리가 있고, 현재 디렉토리라면 저장소 이름을 .으로 하면됨

8git log –reverse

로그를 거꾸로 보기

git commit –amend

마지막 commit의 코멘트를 수정 (지역 저장소)

git pull

원격 저장소로부터 가져오기

Secure Shell (SSH)

ssh_keygen

id_rsa - private key - server / server

id_rsa_pub - public key - remove / client

github.com 사이트에 setting -> SSH and GPG keys -> SSH keys -> New SSH key 로 추가함

이후 git push 했을 때

: Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

이렇게 나온다면 해당 client에서 만들어진 SSH private key인 id_rsa를 찾을 수 없거나 틀린 경우임

Everything up-to-date 이렇게 나온다면 정상적으로 commit 된거임

출처: https://redcarrot.tistory.com/227 [빨간당무 마을]