항해99

[항해99] TIL 사전과제 스터디 D-2

crab. 2022. 7. 10. 23:49

진짜 다시 생각해도 말도 안된다...

하루에 강의 2개라니 이건 말이 안되는거잖아

  • d-day날짜 조절에 실패해서 날짜를 맞추기 위해(깔끔한 블로그 목록을 위해) 오늘 하루에 D-2와 D-1을 다 올린다.
  • 결국엔 2주차, 3주차 둘 다 오늘 다 듣기는 했다…(다..죽어…)

git 2주차

1. 협업위한 Git 배우기!

  • 중요 키워드
    • 버전관리
    • repo
    • commit
    • add
    • commit history
    • tracking
    • push
    • pull
    • clone
  • 앞으로 배우게 될 내용
    • 협업 시나리오 - 김르탄씨와 스선장이 서로 같은 파일을 올릴때 conflict가 발생합니다.
    • 이런 경우
      1. 누가 이 작업 할 것인지 정한다.
      2. 각자 맡은 것을 작업한다.
      3. 각자 작업을 프로젝트에 합칠 수 있게 공유한다.
      4. 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다.

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 업데이트 하기!