강사님 : 토스 진유림님
버전관리란?
혼자라면 자기만의 세이브포인트를 갖고만 있어도 괜찮음. 포토샵 history라 생각하면 됨.
하지만 다수의 사람이 버전 관리를 해야 한다면?
병렬, 비동기적으로 언제든 버전을 저장하고 업데이트를 할 수 있는 git을 사용해야 함.
단순 ctrl z가 아닌 원하는 시점바다 깃발을 꽂고 이들 간 자유롭게 돌아다닐 수 있음.
git을 쓰려면?
저장할 공간만 있다면 어디서나 사용 가능.
git을 사용하는 두가지 방법
CLI, GUI (둘 다 써보면 좋고 둘 중 하나만 해도 무방함)
깃, 깃헙 환경 설정
- git, git bash 설치, 명령 프롬프트에 git을 입력해보고 git이 설치되어 있는지 확인
- vscode 설치
- 깃허브 가입
깃초기화와 로컬 저장소
mkdr cd ls git init()
git add README.md로 add할 파일 선택
git commit -m "프로젝트 설명 파일 추가"로 커밋 메시지와 함께 커밋함.
git log로 생성한 커밋을 볼 수 있음.

origin의 이름은 커스텀 가능함.
로컬 저장소와 원격 저장소
push라는 명령어를 통해 로컬에서 작업한 파일을 원격으로 올릴 수 있음.
다른 사람이 만든 저장소 받아오기
원격 저장소를 그대로 내 컴퓨터에 받아오는건 클론
원격 저장소의 데이터를 가져오는건 풀. 원격이랑 로컬이랑 이미 연결이 되어있는 상태일 때 가능
풀한 사람도 원격 저장소에 push 권한이 있을 때 push할 수 있음
클론할 때 .을 찍으면 기존에 만든 폴더에 대해 클론 가능
manage access에서 콜라보레이터 추가 가능
소스트리로 버전 관리를 용이하게 할 수 있음
깃의 원리 → 알아두면 conflict 해결하기 좋음
SVN









브랜치
여러줄로 작업을 하는 이유 : 한 줄로 작업하면 충돌남. 똑같은 코드를 동시에 고칠 가능성이 있기 때문에
기존에 main에서 작업하고 있음.
head는 내가 지금 작업하는 로컬 브랜치를 의미함.
git branch cat : cat 브랜치를 현재시점에서 만들어라
git switch cat : head가 옮겨감 → main 브랜치는 과거 커밋을, cat 브랜치는 새 커밋을 가리킴
머지
합칠 결과물이 되는 main 브랜치로 이동
git merge oct 하면 최근에 생성된(파일이 추가된) 곳으로 합쳐짐. main이 아닐 수도 있다는 얘기. oct로 합쳐짐
컨플릭트
<<<<<<<<
컨플릭트 내용
>>>>>>>>
으로 표시됨
여기서 컨플릭트 내용을 고치면 컨플릭트 해결.
포크 : 저장소를 통째로 저장
오픈소스에 기여를 하기 위해서 커밋 전에 반드시 컬래버레이터 등록을 부탁할 필요 없이 포크를 사용하여 저장소를 통째로 복제하고 자신의 저장소에 자유롭게 푸시, 커밋을 하고 추후 머지를 부탁할 수 있음.

포크를 해서 git clone을 하면 내 로컬에서 자유롭게 애드커밋 가능
upstream 포크해온 파일을 가르키는 관용어
풀리퀘스트
내 코드를 머지해주면 안되겠니?
깃허브 카테고리에 풀리퀘스트있음. 코드리뷰도 하고 기타 둥둥..

facebook/react 에서 contribution guideline 참고

유용한 팁
amend - 깜빡하고 수정 못한 파일이 있을 때 방금 만든 커밋에 살짝 추가하고 싶어요
stash - 변경사항을 잠시 킵해두고 싶어요. 아직 커밋은 안할래요. 브랜치를 왔다갔다 해야하는 경우에 사용함.
reset - 옛날 커밋으로 브랜치를 되돌리고 싶을 때
revert 이 커밋의 변경사항을 되돌리고 싶어요
cherry-pick : 저 커밋 하나만 떼서 지금 브랜치에 붙이고 싶어요
유림님
insta: jayjinjay