하루에 강의 2개라니 이건 말이 안되는거잖아
- d-day날짜 조절에 실패해서 날짜를 맞추기 위해(깔끔한 블로그 목록을 위해) 오늘 하루에 D-2와 D-1을 다 올린다.
- 결국엔 2주차, 3주차 둘 다 오늘 다 듣기는 했다…(다..죽어…)
git 2주차
1. 협업위한 Git 배우기!
- 중요 키워드
- 버전관리
- repo
- commit
- add
- commit history
- tracking
- push
- pull
- clone
- 앞으로 배우게 될 내용
- 협업 시나리오 - 김르탄씨와 스선장이 서로 같은 파일을 올릴때 conflict가 발생합니다.
- 이런 경우
- 누가 이 작업 할 것인지 정한다.
- 각자 맡은 것을 작업한다.
- 각자 작업을 프로젝트에 합칠 수 있게 공유한다.
- 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다.
2. 누가 이 작업할 거에요? - Issue 할당
- 현업의 협업과정에서 누가 이 작업을 할 것 인지 정하는 단계이다.
- 버그(프로그램이 원하는 대로 동작하지 않는 것)를 신고 (Bug report, 버그 리포트)
- 기능 추가 등의 프로젝트 개선 제안 (enhancement)
- 위 문제들을 해결하기 위한 작업단위
- 이슈를 올리고 그 이슈번호를 커밋할때 같이 써내면
- 그 이슈에 자동으로 그 커밋이 링크된다.
3. 각자 공간에서 작업하기 - Branch - 개념
- 각자 작업을 할 수 있는 공간을 만들기 위해 branch를 사용한다.
- 프로젝트마다 기본 브랜치가 설정되어있다.
- 우리 프로젝트의 경우 main 브랜치가 기본 브랜치였기 때문에 따로 설정을 해주지 않아도 자동으로 main 브랜치에 commit 이 된 거다.
- 앞으로 소스트리에서 로컬에 브랜치를 나누어 작업할 것이다.
- 그림으로도 확인하면서 가면 좋다!
4. 각자 공간에서 작업하기 - Branch - 실습
- 소스트리를 이용해서 브렌치를 만든다.
- 브렌치를 만들면 마치 나무가 가지를 치듯 그 전의 내용을 그대로 가지고
- 새롭게 분기되어 시작할 수 있는 브렌치가 생긴다.
- 그 브렌치를 선택한 상태로(checkout) 커밋을 하면 새로운 브렌치에만 내용이 업데이트 된다.
- main브렌치를 보호하고 새로운 기능을 정리하며 겹치지 않게 모듈화 해서 협업할 수 있다.
5. 각자 공간에서 작업하기 - Branch - 정리
- issue 는 내가 할 작업, 기능 추가, 버그 리포트 등 여러 방식으로 사용할 수 있습니다.
- 협업을 하기 위해 issue 를 만들어 누가 작업할지 정하고, 브랜치를 만들어 작업할 공간을 나눕니다.
- 브랜치(branch)는 특정 commit 에서 갈라져나와 작업할 수 있습니다. 우리는 기능별로 이름을 만들어주어 브랜치에 작업해줍니다.
- 작업할 브랜치로 바꾸는 것을 체크아웃(checkout)이라고 합니다. 체크아웃된 브랜치에만 commit 이 반영됩니다.
6. 작업 내용 합치기 - Merge(병합) -개념
- 3단계. 각자 작업을 프로젝트에 합친다. - merge (경우에 따라). 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
- 대표적으로 github-flow, gitlab-flow, git-flow 가 있습니다.
- 웹 프로젝트 개발의 경우 github-flow 를 많이 사용합니다.
- 우리가 실습하는 방식은 github-flow 와 유사합니다.
7. 작업 내용 합치기 - Merge(병합) -실습
- 브렌치를 두 개 만들고
- 각 브렌치를 따로 업데이트 해준다.
- 이렇게 하면 각 브렌치들의 내용이 서로 영향을 주지 않게 된다.
- 이후 두 브렌치를 메인브렌치에 병합하고
- 두 브렌치를 삭제한다.
8.작업 내용 합치기 - Merge(병합) - 정리와 꿀팁
- 브랜치의 작업 내역 commit 들을 다른 branch 로 반영(합치기)는 것을 Merge(머지, 병합) 이라고 부릅니다.
- 기본적으로 branch 단위로 merge 하게 됩니다.
- 브랜치명은 규칙을 가지고 잘 이름 지으면 프로젝트 관리가 쉬워집니다.
- 작업이 완료되면 작업한 브랜치는 보통 삭제해줍니다.
- 나중에 브랜치 설정이 꼬이는 것을 방지할 수 있습니다.
- 기술(도구 이름) + 단어 조합으로 하면 훨씬 더 좋은 검색 결과를 얻을 수 있어요. 예. sourcetree branch
- 신뢰할 수 있는 블로그(tech 회사의 기술 블로그, IT 전문 매거진)
- 추천 키워드 : 구글링하는 법' , how to googling for programmer , 구글 검색 팁
9. 충돌 해결하기 - Merge conflict - 개념과 준비
- 다시 브렌치를 두 개 만들고
- 두 개의 브렌치에 있는 파일중 같은 파일을 다른 내용으로 수정해준다.
- 즉, 의도적으로 conflict를 낼 것이다.
- 이제 다음강의에서 conflict와 이 conflict를 해결하는 과정을 배울것이다.
10. 충돌 해결하기 - Merge conflict - 실습
- 이제 두 브렌치를 순서대로 병합하면 두번째 브렌치를 병합할때 에러가 난다.
- 컨플릭트가 났다고 뜨는데 이때 파일 상태에서 충돌이 난 파일을 열고
- 어떻게 그 파일을 수정할 지 결정해 준 이후에
- 다시 스테이징하고 커밋하면 해결된다.
- 이때 커밋메시지는 소스트리에서 제공해준다.
11. 충돌 해결하기 - Merge conflict - 정리
- 브랜치 두개를 만들고 각각 브랜치에서 같은 파일을 수정하고 commit 해보세요. main 브랜치에 merge 하려고 하면 conflict 가 발생합니다! 파일을 직접 수정해서 conflict 를 수정하고 commit 해보세요.
- 앗! 만약에 잘 안 되고 어렵다! 오류가 난다! branch 삭제하면 됩니다! 삭제하고 다시 만들면 되죠~! 😉
12. 원격 repo 와 Branch - 개념과 실습
- 지금까지 트랙킹 하던 것은 브렌치 단위로 트랙킹하던것이다.
- 즉 우리가 로컬에서 새로 브렌치를 만든다면 원격에 브렌치를 새로 만들며 push가 된다.
- 소스트리에서 보는 origin은 이 원격을 뜻하는 것으로서 만약 origin이 많이 밀려있다면 그만큼 로컬과 원격의 반영 차이가 있다는 뜻이다.
13. 원격 repo 와 Branch - 정리와 꿀팁
- push와 pull 은 기본적으로 tracking(추적)되고 있는 브랜치를 기준으로 commit 내역을 반영합니다.
- 지금 상황과 상관없이 여러분은 언제나 더 나아질 수 있다. 더 나아지는 일은 언제나 스스로부터 시작할 수 있다. 더 나아지는 일은 언제나 오늘부터 시작할 수 있다.
No matter the circumstances you can always improve. You can always start improving with yourself. You can always start improving today.
14. 2주차 배운 개념 지도 그리기
- 협업하기 위한 단계는 무엇이 있을까?
- 협업할 때는 아래의 단계를 따릅니다. 1단계. 누가 이 작업 할 것인지 정한다. - Issue 2단계. 각자 맡은 것을 작업한다. - Branch 3단계. 각자 작업을 프로젝트에 합친다. - merge (경우에 따라). 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다. - PR 후 merge
- issue
- branch
- merge
- merge conflict
- 원격 repo 의 origin
15. 2주차 끝 & 숙제 설명
- 내 TIL repository 업데이트 하기!
'항해99' 카테고리의 다른 글
[항해99] TIL D+1 (0) | 2022.07.12 |
---|---|
[항해99] TIL 사전과제 스터디 D-1 (0) | 2022.07.10 |
[항해99] TIL 사전과제 스터디 D-3 (0) | 2022.07.10 |
[항해99] TIL 사전과제 스터디 D-4 (0) | 2022.07.09 |
[항해99] TIL 사전과제 스터디 D-5 (0) | 2022.07.08 |