
가장 쉬운 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
폴더에서 숨겨진 파일까지 보이도록 하기

git status 입력하기
git add -A 를 입력.git status 를 입력하면
git commit 입력하면 되는데, 설명을 붙여야 나중에 좋으니git commit -m "First Commit" 이렇게 -m을 붙이고 뒤에 설명을 적는다.
현재 진행상황

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

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

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

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

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


현재 진행상황

🤔 그럼 나중에 이 캡슐을 파면 dog 하나만 딸랑 나오는거 아닌가요?
→ 아니다! 그 이전의 모든 작업 내역들이 전부 고구마 줄기처럼 딸려나온다. 🍠🍠🍠
cat 파일을 삭제해보겠다. mouse 파일에서 name을 mickey 로 바꿔준다.penguin name : pororo 를 새로 만들어준다.
다시 터미널에서 git status 로 상태를 확인해보자!
→ penguin 이 생성됐다는 사실 뿐만 아니라,
→ mouse 가 변경되었다는 사실,
→ cat 이 삭제되었다는 것까지 타임캡슐에 넣을 목록으로 나와있다.

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

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

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

✨ 만약 더이상 터미널창에 입력이 안된다면, vi 에디터가 실행되는 중인것이므로 ;q (콜론+q) 를 눌러서 빠져나오면 된다!
source tree에서는 history 탭에서 좀 더 잘 확인 가능하다!
→ 각각을 클릭해보면 무엇이 어떻게 바뀌었는지도 쉽게 확인이 가능하다 🙂

현재 진행상황

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

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


신중한 방법 revert
→ reset 보다는 조금 신중하게, 미래에 한 발을 걸치고 과거로 돌아가는 방법이다.
그럼 아까 git log 로 확인한 타임 캡슐 중 (아래) 이 시점으로 돌아가보자!
→ 일련번호중 앞 여섯자리만 복사해주고

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

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

🚨 다시 미래시점으로 가지 못한다.
3-1에서 삭제되고, 변경되었기 때문에 다시 예전상태로 직접 복구를 해놓고 시작해보자.


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

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

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

👏🏻 그럼 reset 으로 다시 미래로 돌아갈 수 있다! ✨
branch
git branch my-idea 를 입력해서 나의 평행우주, branch를 만들어보자.


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

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

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

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

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


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


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

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

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


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

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


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


"팀장님, 제가 구상해 본 안이 있는데요"
→ 팀장님이 마음에 들어하셔서 메인프로젝트에 적용하기로 했다! .. 5-1. Merge 로 이어서 👏🏻


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

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

결과

git log --graph --all --decorate 이 명령어를 쳐보면 시각화된,
source tree를 이용해 일단 다시 merge 하기 전 시점으로 돌아가보자.


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

→ 확인!
이번엔 rebase 를 이용해서 합쳐보자.
→ git rebase my-another-idea
이렇게 하면 분기들이 한줄로 깔끔하게 합쳐진다.
→ git log --graph --all --decorate

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