티스토리 뷰

Programming/.common

[Command]Git 명령어 정리

가그린민트 2017. 8. 7. 01:40

git에는 객체와 참조가 있으며, commit만이 객체이다.(나머지는 모두 참조일뿐)

자식은 부모를 찾아갈 수 있는 이유는 부모 링크를 가지고 있기 때문이다.

git commit하면 HEAD(현재 branch, 즉 가장 마지막 commit을 참조)에서 commit 생성된다. branch 는 객체의 참조를 의미할 뿐이다. (commit의 이름이 너무 어렵기 때문에 branch를 사용하는 것이라고 봐도 될듯)1. commit하면 commit 생성2. HEAD 갱신3. HEAD가 가르키는 branch가 있을 x`x경우 branch 갱신


- git branch -f jake C5 -> (강제로 브런치를 commit으로 이동시킴)- git tag jina C5 -> (버전관리) tag와 branch의 차이는 tag는 움직이지 않는다.

- push 할 경우 branch에 연결되어 있는 의미있는 commit들만 push한다.

- git-flow는 요새는 안 쓰며, github flow를 따르자 https://guides.github.com/introduction/flow/

- merge와 rebase의 차이점은 merge는 부모가 두명, rebase는 내 branch와 의 차이점을 얹혀준다고 보면 된다. (rebase는 왠만하면 로컬에서만 하자. 원격일 경우 충돌날 수도 있다.)

추가적으로 학습해야 할 부분 : cherrypick, rebase -i, stash


연습하기 좋은 Site : learngitbranching
누구나 쉽게 이해할 수 있는 git 입문
Pro Git


일반적인 작업시 사용하는 명령어

$ cd [깃 로컬 저장소 경로]
$ git checkout -b [브랜치 이름]
$ git add .
$ git commit -m "[커밋 메시지]"
$ git push origin [브랜치 이름]
웹에서 merge 요청

$ git merge master (내 branch로 받아오는 작업)

새로운 로컬 저장소 만들기

$ cd Desktop
$ mkdir sample
$ cd sample/
$ git init
git init을 잘못한 경우엔 .git을 삭제하면 된다.

git 저장소 상태 보기

$ git status

Add to Index

$ git add . 
or
$ git add [커밋할 파일명]

Commit

$ git commit -m "[커밋메시지]"
  • 의미있는(논리적인 한가지) 작업을 한가지 했으면 commit을 해라

.gitignore

*.o 
*.sqlite 
*.bak 
*.old 
.DS_Store 
logs/
  • 무시해야 하는 바이너리 파일 등을 .gitignore 파일에 기술하면 커밋에서 제외된다.

Log 확인

$ git log --oneline --decorate --graph

이전 상태로 변경 예

$ git reset -- [파일이름]
$ git reset --hard [커밋아이디]
$ git reset --hard -> 마지막 commit으로 돌아갈때
$ git reset --hard HEAD^ 한단계 
$ git reset --hard HEAD^^ 두단계  (git reset --hard HEAD~2)
$ git reset --hard HEAD^2 (두번째 부모)
  • (파일 변경사항은 그대로 두고) add 혹은 commit을 뒤로 돌아가게 하는 용도

원격 저장소 연결

1. 원격 저장소 확인
$ git remote -v

2. github에서 repository 생성

3. local과 remote repository 연결 (일반적으로 원격저장소 이름은 origin으로 세팅함)
$ git remote add origin [깃 원격 저장소 주소]

git branch

1. branch 생성(HEAD 에 생김)
$ git branch [브랜치이름]  

1-1. 특정 위치에 branch 생성
$ git branch -f [브랜치이름] [커밋아이디]

2. 로컬 브랜치 확인
$ git branch
$ git branch -v (해당 브랜치의 commit ID도 보임)

3. 원격 브랜치 확인
$ git branch -r 

4. master로 이동 후 merge
$ git checkout -f master
$ git merge [브랜치이름]

git push

$ git push origin master 
$ git push --force 

git pull

$ git pull 
  • pull = fetch + merge
  • fetch : 원격에서 local 저장소로 가져옴
  • merge : local 저장소로 가져온 내용을 Working Directory에 반영 및 Index에 적용하는 것 (그리하여 git status 명령어로 확인시에 변경사항이 체크되지 않는 것임)

  • git clone

    $ git clone [깃 원격 저장소 주소] [로컬 원격 저장소 경로]
    • remote 주소 설정이 자동으로 세팅됨

    git tag

    $ git tag [태깅] [커밋아이디] $ git push origin [태깅]

    • 실 배포버전을 위한 용도
    • 태깅하고 push하면 github의 release에 올라감
    • 태깅하고 commit해도 HEAD위치가 갱신되지 않는다.


    댓글
    링크
    최근에 달린 댓글
    «   2024/04   »
    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
    Total
    Today
    Yesterday