ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [소마 강의] git 심화
    Software Maestro/소마 강의 2019. 7. 12. 16:02
    반응형

    1. commit 삭제하기

    <1> git revert

    작업내역 하나 없었던 일로 한다. 대신 이 작업도 새로 커밋에 추가된다.

    <2> git reset

    특정 작업내역상태로 시간을 되돌린다.

    --hard reset은 완전 깨끗하게

    --soft reset은 수정할 수 있도록 여지를 남겨둔다.

     

    revert는 이 작업을 왜 취소했는지에 대한 이유를 커밋으로 남기므로 histroy 자체를 바꾸지는 않는다. 매우 안전한 방법. 협업하고 있을 때는 revert.

    reset은 매우 불안정한 방법. 많이 쓰지는 않음. 협업할때 reset은 매우매우 조심하자.

     

    주소 : ________________

    여기에 원래 있던 프로젝트를 fork해오자.
    fork 후 자신의 로컬로 clone하자. git clone <url> 하면 된다.

    git_class를 확인해보자. cd로 git_class에 이동 후 gloga를 쳐보자. (gloga는 이전 포스트에 있다.)

     

    우선 checkout으로 feature브랜치로 옮겨가자.

    git checkout feature

    이상태에서 markdown문서를 열어보자.

     

    확인 후에 feature브랜치에 있는 상태에서 E.commit에 있던 해쉬값인 cabdce3를 이용해서 git revert cabdce3 해보자.

    충돌이 일어났다.
    git revert --abort로 revert 취소해보자.

    다시 gloga해서 맨 위에 있는 해쉬값인 08eeea1를 복사한다.
    git revert 08eeea1 하면 커밋할때 봤떤 그 화면이 보인다.
    "더이상 사용하지 않음"이라고 하고 :wq하고 나온다.

    gloga로 확인.

     

    다시 E.commit의 해쉬값인 cabdce3으로 git reset cabdce3해보자.
    gloga로 확인.

    D.add 해쉬값도 복사해서 git reset --hard 52048c0해보자.
    gloga로 확인.

     

    [2] rebase

    merge랑 비슷한 rebase. 차이점을 함 보자.

    merge : 한꺼번에 합쳐지는 merge. merge했다는 커밋이 하나 남는다.
    rebase : 순서대로 합치는 rebase. 커밋이 따로 남지는 않는다. rebase를 적절하게 쓰면 history를 깔끔하게 관리할 수 있다.

     

    git checkout dev

    git branch -d feature로 필요없는 거 삭제.

    git log 해서 커밋들 확인

    git checkout master 후 gloga.
    여기 origin/어쩌구 이거는 로컬에 있는거.

    cat README.md

    merge 시도해보자. gs로 on branch master 확인 후 git merge dev.
    다시 gloga

    git reflog master으로 어디로 돌아갈지 보자.

    git reset --hard d792e95으로 돌아가자.

    git checkout dev

    현재 base는 B에 있다. 이걸 C로 바꿔주자. git rebase master.

     

    git pull origin dev  이 안에는 merger가 들어가있음
    git pull --rebase origin dev으로 Rebase 쓸 수 있음. 작업내역이 별도의 브랜치로 존재하지 않아도 될 때

    [3] 추가 명령어

    <1> amend

    git commit --amend : 최근커밋수정
    git commit --amend -m "message"
    git commit --amend --no-edit

    git commit --amend -m "stash 기능 추가"

    주의 : 커밋 수정하면 해쉬값 달라짐

     

     

    <2> cherry-pick

    다른 브랜치에서 기능 따오고싶을때 시용.

     

    <3> git stash

    작업내역을 다른 곳에 저장했다가 나중에 꺼내서 이용. 스택으로 되어있음. LIFO

    git stash : 현재 작업 임시 보관, clean working tree
    git stash save : "message" 보관 메세지 남기기
    git stash list : 보관목록확인
    git stash apply : 최근 보관 작업 적용
    git stash pop : 최근 보관 작업 적용 및 삭제
    git stash clear : 모든 보관 작업 삭제

     

    진짜 많이 쓴다고 한다. 꼭 익혀두기.

    vi README.md 로 내용수정
    gs
    git stash
    gs
    git stash pop

     

    <4> git tag

    아까 해쉬태그 막 확인하고 그거 넘 복잡했다.
    커밋에 꼬리표를 달아보자.

    git tag : 태그 목록 확인
    git tag v1.0 : v1.0태그 붙이기
    git show v1.0 : v1.0태그 확인하기
    git tag v1.0.2 hash : 이전 커밋에 태그 달기
    git push origin v1.0 : v1.0 태그 리모트에 push
    git push origin --tags : 모든 태그내역 push

     

    <5> git log

    git log : 현재 커밋 이력 보기
    git reflog : 변경된 commit 이력까지 모두 보기

     

    <6> 기타

    git checkout --orphan <branch> : 커밋 이력없는 새로운 브랜치 생성.

    git merge --squash : 여러 커밋이력 하나로 합쳐서 merge하기.

     

     

    [4] git flow

    브랜치 기법. 어떻게 브랜치를 활용할 것인가. 너무 많은 브랜치가 나왔을 때 관리 힘듬.
    저장소를 고급스럽게 관리하기 위한 git 확장 솔루션.

    git flow init으로 시작.

    git flow feature start feature_branch
    git flow feature finish feature_branch
    git flow release start 0.1.0

     

     

    [5] Gitlab

    git push -f origin dev 해서 내 로컬을 서버로 강제로 올린 다음 실습 계속 진행

    gitlab 들어가서 merge request. create merge request.(아까 dev에 푸쉬한걸로)
    title: WIP : tag, gitlab 기능 추가 (WIP : Working in Progress)
    branch delete 체크.

    반응형

    'Software Maestro > 소마 강의' 카테고리의 다른 글

    [소마 강의] git 초급  (0) 2019.07.09

    댓글

Designed by Tistory.