오늘 끝나면
Git, 코드의 타임머신
- ✓Git, 코드의 타임머신의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 Git,이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
add·commit·push·branch — 저장하고, 되돌리고, 갈라지고, 합치고 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
개발 · Day 21
Git,
코드의 타임머신
Git은 코드를 저장하고 과거로 되돌리는 도구다.
commit은 저장하고, branch는 갈래를 치고, merge는 다시 합친다.
add · commit · push · branch 네 개만 잡으면 끝난다.
Git = 코드의 스냅샷을 쌓는 타임머신
Git은 코드의 스냅샷을 시간순으로 쌓아둔다. 매 순간을 사진처럼 찍어두기 때문에 언제든 그 시점으로 되감을 수 있다.
파일을 복사해 최종, 최종_진짜, 최종_진짜최종을 만들던 일을 Git이 대신한다.
코드를 고치고 add로 담고 commit으로 찍고, 필요하면 branch로 갈래를 친 뒤 merge로 합치고 push로 올린다.
언제든 위의 어느 시점으로든 되감을 수 있다
add = 사진에 담을 변경 고르기
add는 이번 스냅샷에 담을 변경을 고르는 단계다.
파일을 여러 개 고쳐도 전부 담을 필요는 없다. 이번에 찍을 것만 고른다. 사진을 찍기 전에 프레임을 고르는 일과 같다.
이렇게 고른 변경이 모이는 자리가 스테이징(staging) 영역이다.
git add app.js는 “app.js를 이번 스냅샷에 넣는다”는 뜻이다. 아직 찍은 건 아니고, 고르기만 한 단계다.
아직 셔터(commit) 전이라, 고르기만 한 단계다
commit = 셔터, 스냅샷 영구 저장
commit은 골라둔 변경을 스냅샷 하나로 영구 저장하는 단계다.
add가 프레임을 고르는 일이었다면 commit은 셔터를 누르는 일이다. 셔터를 누르면 히스토리에 동그라미가 하나 쌓이고, 직전 커밋과 선으로 이어진다.
커밋에는 꼭 메시지를 붙인다(“로그인 버튼 추가”). 나중에 “이때 뭘 했지”를 알려주는 단서가 된다.
branch = 평행우주에서 따로 실험
branch는 갈래를 쳐서 따로 작업할 평행우주를 만드는 기능이다.
새 기능을 실험하다 망치면 멀쩡한 코드까지 깨질 수 있다. 그래서 갈래를 쳐 feature 우주를 따로 만들고, 거기서 마음껏 부순다. 원래 main 우주는 그대로 멀쩡해서 커밋 그래프가 두 줄로 갈라진다.
merge는 갈라진 두 우주를 다시 합치는 기능이다. 잘 됐으면 git merge로 합치고, 실패하면 그 갈래만 버린다. 여럿이 각자 갈래에서 일하다 합치는 것이 협업의 기본이다.
feature 우주에서 망쳐도 main은 멀쩡하고, 잘 되면 merge로 합친다
push = 로컬을 원격으로 복사
push는 로컬에 쌓은 커밋을 원격(클라우드)에 복사하는 단계다.
여기까지 한 일은 전부 내 컴퓨터(로컬) 안에서만 일어난다. 컴퓨터가 고장 나면 다 날아간다.
그래서 git push로 커밋 기록을 통째로 원격(GitHub)에 복사한다. 백업도 되고, 동료가 받아 함께 작업할 수도 있다.
push 전 커밋은 원격에서 회색으로 보이다가, push하면 파랑으로 바뀐다. push해야 안전하게 공유된다.
Q. git commit과 git push의 차이는?
commit은 로컬에 스냅샷을 저장하는 일이고, push는 그 기록을 원격(깃허브)에 올려 백업하고 공유하는 일이다. commit만 하면 기록이 내 컴퓨터에만 있어서, 컴퓨터가 죽으면 같이 사라진다. push까지 해야 클라우드에 남고 동료도 받아 볼 수 있다.push 전은 회색, push 후는 파랑이다. push해야 백업되고 공유된다