가장 쉬운 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 (삭제할 브랜치 이름) 해주면 된다.
(소스트리에서는 우클릭해서 없애주면 된다.)