구글닥을 코드에 적용한거라고 볼 수 있음
테스트 하는 시점에 버저닝을 함. 테스트가 잘 되면 그 버전으로 프로덕션을 배포함
모든 텍스트 파일에 사용할 수 있는 점이 있음
클라이언트는 별도 설치
local에 있는 copy에서하고 중앙 remote 에서 sink함. remote repo: repo, branch 이 카피본이 내 컴퓨터에 따로 있고, commit
Repo: source of truth 다수의 카피본이 있을 수 있지만 1개의 Master/Main이 있음. Main branch라고 함.
보통 Main 에 바로 작업하는게 아니라 copy본을 떠서, 작업 후 copy를 main과 merge함. Master과 Main도 Branch중 하나임. 새로운 feature을 개발할 때, 새로운 branch를 만들고 적당한 이름을 줌.
Clone: 다른 사람이 만든 Repo를 복사해옴. 깃헙에 많은 오픈소스 프로젝트들이 있음. clone으로 내 local로 가져와서 작업을 하다가 맘에 들면, 내 계정으로 업로드 할 수 있음.
Fork는 약간 다름. 나중에 다름
Commit 작업을 하고 내가 갖고 있는 Local Repo에 반영.
Push/Merge: Local을 Remote에 있는 실제 Main하고 sink 맞추는 것.
Branch 카피본을 만들어 그걸 local에서 작업한 뒤, remote 단에서 push, merge
개발자 관점에서 서버에서 소스코드를 가져오는것 pull.
개발자인 내가 만든 카피본을 서버단으로 밀어버리는 것 push.
그 시점의 스냅샷을 가져옴 pull, 서버에 있는 branch가 또 갱신될 수 있기 때문에, 하루에 한번은 내 local copy본으로 pull 해야함.
보통 변경사항이 병합이 잘됨.
가끔 두 사람이 똑같은 라인을 건드는 경우가 있음. git은 어떻게 해결해야될지 몰라 merge conflict 에러를 냄. 어떤 사람이 삭제한 코드에 다른사람이 코드작성을 한 경우. git은 이러한 과정을 알지 못함. Push,Pull이 fail하게 됨.
보통 브랜치 자체를 push함. 이과정에서 다른사람도 작업하다 보니 conflict. 이게 해결되면 remote branch -> master로 merge
version C0이 있다고 가정.
각자 local로 master를 직접 카피해감. branch 안 만듦.
같은 버전으로 싱크되어 있음.
영희가 local에서 C1 생성. 철수는 생각지도 못하게 내용이 많이 바뀌어 버리면 어려움 생김.
영희와 master는 sink됨. 철수는 X
아침에 git pull을 사용해서 하루사이 바뀐게 무엇인지 받아봐야함.
세사람이 같은 버전을 공유
영희, master는 sink 되고 철수는 X
철수가 pull을 안하고 c1 -> c3로 커밋함.
나중에 철수가 pull push를 하려면 그 전에 pull. pull 해보니 c3, c2 충돌 발생. 이를 해결한 c4를 만듦. 아직도 local에 있음
변경이력을 추적할 수 있음.
3명이 sink
master을 바로 건드리는 가정이라 좀더 생략된 게 있음. branch - master는 생략
branch를 만들어서 쓰는 경우
브랜치?
보통 작업은 Trello JIRA를 완료하기 위해 하다보니 링크를 같이 보내주는 것이 좋음.
리뷰어 입장에선 우선순위를 어떻게 정해야할지 또 물어야하기 때문에, deadline을 적어주면 좋음. 천천히 급하지 않다고하면, 아에 안할수도 있음. 다들 바쁨
Pull Request? 용어대로 보면 나한테 오는거 같은데. Pull Request는 서버에 있는 코드 관점에서임. 개발자가 보낸 코드를 서버 관점에서 받게 하는 것.
에러 났었음.
main -> master 옛날에 만든 branch다보니, source of truth가 master, 요즘 repo는 main이라고 불림.
내 repo master에선 새로운 파일이었음.
clone을 해온 master의 branch는 있던 파일
이게 좀 헷갈린다.
강사님도 내일 더 보강해서 강의 하신다고 하신다. merge가 되지 않는 현상.