TIL 32 | Git - local

Saemsol Yoo·2021년 1월 4일
0

git

목록 보기
1/2
post-thumbnail

가장 쉬운 Git 강좌 - (상)혼자작업편 을 보며 정리한 내용입니다.


1. git 저장소 만들기

vsc에서 바로 터미널 열기 : control + 백틱
→ 현재 작업하고있는 디렉토리로 열린다.

git 시작하기 : git init
→ 빈 git 저장소가 만들어졌다는 메세지가 뜨는데, 이제 이 폴더가 git의 관리하에 있게된다.

명령어를 사용해서 이름 등록하기 : git config --global user.name"내 이름"
→ 확인하려면 git config user.name

명령어를 사용해서 이메일 등록하기 : git config --global user.email"내 메일주소"
→ 확인하려면 git config user.email

폴더에서 숨겨진 파일까지 보이도록 하기



2. 현재 시점 저장하기

  1. git status 입력하기
    Untracked : git에서 아직 쳐다보지 않는다는 뜻이다.
    → 그래서 아직 담기지 않은 파일들이 보인다. (cat, mouse)
    🤚🏻 이 항목들은 정확히는 이 파일들이 아니라, '이 파일들이 만들어졌다는 사실' 들이다.

  2. 그럼 이제 담아보자. git add -A 를 입력.
    → 이곳의 모든 것을 git 타임캡슐에 넣겠다는 명령이다.


  3. 그리고 다시 git status 를 입력하면
    → changes to be committed : 묻을 것들이라고 이해하기
  4. 그럼 이제 묻어보자! git commit 입력하면 되는데, 설명을 붙여야 나중에 좋으니
    git commit -m "First Commit" 이렇게 -m을 붙이고 뒤에 설명을 적는다.
    → 첫번째 타임캡슐에 묻혔다 🥳

현재 진행상황

  1. 다시 git status 로 살펴보면 → 담아서 묻을게 없다고 나온다! (방금 묻었으니까)


  2. 그럼 새 파일(dog name: snoopy) 을 하나 만들고 다시 터미널에서 git status 를 입력해보자.


    source tree 에서는 입력없이도 바로 새로 묻을 파일이 생겼다고 보여준다.

  3. 이번엔 소스트리에서 커밋해보자.
    → mac 에서는 그냥 체크 하면된다.

    → 그리고 커밋 을 눌러서 메세지를 적은 다음 커밋 하면 새 캡슐이 묻힌다.



현재 진행상황

🤔 그럼 나중에 이 캡슐을 파면 dog 하나만 딸랑 나오는거 아닌가요?
→ 아니다! 그 이전의 모든 작업 내역들이 전부 고구마 줄기처럼 딸려나온다. 🍠🍠🍠


  • 좀 더 다양한 변화를 위해 이번에는 cat 파일을 삭제해보겠다.
  • 그리고 mouse 파일에서 name을 mickey 로 바꿔준다.
  • 그리고 penguin name : pororo 를 새로 만들어준다.


  1. 다시 터미널에서 git status 로 상태를 확인해보자!
    penguin 이 생성됐다는 사실 뿐만 아니라,
    mouse 가 변경되었다는 사실,
    cat 이 삭제되었다는 것까지 타임캡슐에 넣을 목록으로 나와있다.

    source tree에서도 이렇게 확인이 된다.


  2. 이 변화들을 아까와 같은 방식으로 캡슐에 담아서 커밋으로 묻어버리자.

  3. 이제까지 묻은 캡슐들을 보려면 git log 명령어 입력
    → 캡슐의 정보들과 메세지들이 뜬다.

    만약 더이상 터미널창에 입력이 안된다면, vi 에디터가 실행되는 중인것이므로 ;q (콜론+q) 를 눌러서 빠져나오면 된다!

    source tree에서는 history 탭에서 좀 더 잘 확인 가능하다!
    → 각각을 클릭해보면 무엇이 어떻게 바뀌었는지도 쉽게 확인이 가능하다 🙂


현재 진행상황



3. 과거로 돌아가기

이전에 묻었던 캡슐을 파내서 과거로 돌아가보자!

과감한 방법과, 신중한 방법이 있는데

  • 과감한 방법 reset
    → 돌아갈 과거 이후의 행적은 복원할 여지 없이 완전히 지우는거다.

  • 신중한 방법 revert
    reset 보다는 조금 신중하게, 미래에 한 발을 걸치고 과거로 돌아가는 방법이다.


3-1. Reset

  1. 그럼 아까 git log 로 확인한 타임 캡슐 중 (아래) 이 시점으로 돌아가보자!
    → 일련번호중 앞 여섯자리만 복사해주고

  2. git reset fed0f7 --hard 를 입력해준다.
    → 그럼 현재 이 시점(fed0f7a)에 와있다는 메세지가 뜬다.

    그리고 파일들을 확인해보면 penguin 은 사라져있고, cat은 생겻고, mouse 의 이름은 다시 jerry로 되어있다!

    🚨 다시 미래시점으로 가지 못한다.



3-2. Revert

3-1에서 삭제되고, 변경되었기 때문에 다시 예전상태로 직접 복구를 해놓고 시작해보자.


  1. git log 로 일련번호를 확인해보면 되는데, 이번에는 돌아갈 시점이 아닌, 취소할 시점을 찾는다. (그럼 가장 최근것을 고르면 되겟죠?)

  2. 그리고 git revert 013db7 git revert 와 앞의 6자리를 붙이면
    → 새 커밋 메세지를 작성하는 화면이 뜬다.
    → 그럼 파일들이 과거 상태로 돌아와있다!

    🤚🏻 그런데 git log 를 확인해보면, reset 처럼 이 시점 이후가 지워진 게 아니라, 이 캡슐 뒤에 새 캡슐이 묻힌걸 확인할 수 있다.

    👏🏻 그럼 reset 으로 다시 미래로 돌아갈 수 있다!



4. 평행우주 넘나들기

branch

  1. git branch my-idea 를 입력해서 나의 평행우주, branch를 만들어보자.

  2. 다시 git branch 를 입력해보면,
    → 기존 branch인 master
    → 새로 만든 my-idea 가 있다.

  3. my-idea 로 넘어가기위해 git checkout my-idea 를 입력한다.

    🤔 이렇게 해도 다른 변화는 생기지 않는데,
    → 그 이유는 새로 만들어지는 branch 는 원 branch 현 상태를 그대로 가져가기 때문이다.

  4. 그럼 이 평행우주(my-idea) 에서 나만의 작업을 해보자!

  • 쥐는 잡고, 공룡을 추가


  1. 그리고 캡슐에 넣어서 묻어준다.
    git add -A
    git commit -m "ADD dino"

  2. 상사가 들어와 작업현황을 확인하려한다면 당황하지 말고 원래 우주로 돌아가 보여드린다.
    git checkout master(이동할 우주 이름) 을 입력해준다.



    → 그럼 감쪽같이 이전 상태로 돌아와 버린다.

  3. 이번에는 source tree에서 연습해보자.
    → 원하는 branch 를 더블클릭하면 각 우주를 이동할 수 있다.

  4. 그럼 my-idea 에서 새브랜치를 만들어보자.
    my-idae 에 checkout 된 상태에서 상단의 브랜치 버튼을 누르고 my-another-idea 로 지은 뒤 아예 '새 브랜치 체크아웃' 까지 하도록 한 후 브랜치 생성을 눌러준다.

  5. 이제 새 브랜치(my-another-idea)가 생성됐고,
    my-idea 로 부터 파생된 브랜치이기 때문에 my-idea 의 상태를 그대로 가져온걸 알 수 있다.

  6. 그럼 my-another-idea 여기에서 또 수정을 해보자.

  • 고양이 이름을 nyang 으로 바꾸고 캡슐에 넣어 묻어두겠다. ("EDIT cat name")


  1. 그리고 다시 master 브랜치로 돌아가서, 상사가 얘기하는 순간으로 돌아가보자.
  • 개 이름을 'snoopy'에서 'mong'으로 바꾸자.


  1. 그럼 다시 커밋을 하고
    git add -a , git commit -m "EDIT dog name"



  2. "팀장님, 제가 구상해 본 안이 있는데요"

  • 쥐는 빼고, 둘리라는 공룡을 넣어보는거에요.
  • 그리고 고양이도 이름을 nyang 이라고 바꿨어요.

팀장님이 마음에 들어하셔서 메인프로젝트에 적용하기로 했다! .. 5-1. Merge 로 이어서 👏🏻



5. 다른 우주에서 가져오기


→ 이 두 평행우주(my-idea,my-another-idea) 에서 일어난 변화를 master 브랜치로 가져와야 한다.
👏🏻 그런데 my-another-idea 이 브랜치가 my-idea 여기에서 일어난 변화도 포함하기때문에 my-another-idea 이곳에서만 불러오면 되겠다!

5-1. Merge

  1. 우선 다시 master 브랜치로 돌아온다.
    git checkout master

  2. 그 다음 git merge 를 적은 뒤 변화를 가져올 브랜치 이름을 적어준다.
    git merge my-another-idea

  3. 결과

  • 개이름이 mong으로 변화되었을 뿐 아니라
  • 공룡도 추가되었다. (다른 평행우주에서 작업했던 내용들)


  1. git log --graph --all --decorate 이 명령어를 쳐보면 시각화된,
    두 분기에서의 작업내역을 볼 수 있다.



5-2. Rebase

source tree를 이용해 일단 다시 merge 하기 전 시점으로 돌아가보자.


Hard - 모든 작업 상태 내 변경 사항을 버림 선택


→ 확인!


  1. 이번엔 rebase 를 이용해서 합쳐보자.
    git rebase my-another-idea

  2. 이렇게 하면 분기들이 한줄로 깔끔하게 합쳐진다.
    git log --graph --all --decorate

6. 다 쓴 브랜치 삭제

git branch -D my-idea : git branch -D (삭제할 브랜치 이름) 해주면 된다.
(소스트리에서는 우클릭해서 없애주면 된다.)

profile
Becoming a front-end developer 🌱

0개의 댓글