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 전) 변경 사항을 보여줌
이전 log로 되돌리기
git reset VS git revert
git reset [commit id] –hard
commit을 삭제하고 이전 commit으로 최신화 하고 싶음
만약 --hard를 안했다면 git diff로 변경사항이 보이고, git reset --hard 하여 바꿀수 있음
--soft 등의 옵션도 존재함
과거로 되돌리는 것(돌아가는 이전까지 모든 내역이 사라짐)
**server로 push 하기 전이라면 reset**
이전 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 옵션을 동시에 (즉 여러 옵션을 연달아 나열할 수 있음)
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 했을 때
git@github.com: 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 [빨간당무 마을]