pull request
pull request를 좀 더 정확히 알기위해 직접 시도해보았다.
Fork는 선택
fork가 꼭 필요하다고 생각했는데, 그건 아니였다.
오픈소스 처럼 나에게 권한이 없는 것은 clone
해서 만들어도 push
할 수 없기 때문에 fork
해서 pr을 보내는 것이 맞다.
하지만 협업 같이 나에게도 권한이 있을때는 원격저장소와 내 로컬저장소를 바로 연결해도 가능하다.
순서
먼저 branch를 만든다.
git checkout -b "브랜치 명"
feature/*
를 관례로 사용하는 듯 하다.
이후 원하는 작업을 하고, push
한다.
그러면 원격저장소에 pr을 하라고 창이 뜬다.
newfile
에서 .github/pull_request_template.md
파일을 만들어 pr의 템플릿을 만들어줄 수 있다.
pr은 md를 사용한다.
권한자는 pr을 보고 merge여부를 결정한다.
merge가 완료되면 branch를 지워야 하는데, setting을 통해 자동으로 branch가 지워지게 할 수 있다.
이후 로컬저장소에서는 추가적으로 pull
해주고, main
branch로 이동 후 사용한 branch를 소거해줘야 한다.
git checkout main
git branch -d "삭제할 branch"
세팅에서 default branch 명을 변경할 수 있다.
질문
- merge 자동화는 안되는 걸까?
- 로컬저장소에서도 자동으로 branch가 지워질 순 없을까?
organization
이번에 협업을 하면서 분명 초대를 받았는데 기존처럼 떠서 뭐지 싶었는데 레포지토리에 초대가 된 것이였다.
개인 레포지토리는 개인프로젝트, 포트폴리오등으로 적합하나 협업에는 조금 부정확하다.
권한 관리, 이슈 및 pr 관리, 보안 및 엑세스 관리 등에서 조직이 장점을 가진다.
organization을 만들어 브랜치 보호설정을 하면 main으로는 바로 push할 수 없고, n명이 승인을 해줘야 pr이 승인되는 등의 설정을 할 수 있다.
clsx
clsx는 tailwindcss 처럼 정적인 css형태를 취할때 동적css처럼 사용하기 위해 사용한다.
emotion은 동적 css-in-js로 동적css에 해당하기 때문에 clsx가 필요 없다.
호이스팅
문득, 호이스팅이 뭐더라?
var vs let,const
먼저 공통점으로 둘다 호이스팅은 일어난다.
호이스팅이란, 정의가 나중에 이루어진다고 해도 코드 최상단에서 이루어지는 것처럼 실행되는 특징이다.
var
- 함수레벨 스코프 함수내에서는 지역변수처럼 동작하지만, 외부에서 선언되면 무조건 전역변수이기 때문에 조심해야 한다.
- 선언과 초기화가 통시에 호이스팅이 일어나 선언과 초기화가 동시에 일어나기 때문에 원래 코드에 도달하기 전에 호출해도 초기화된 값으로 접근 가능하다.
let, const
- 블록레벨 스코프 블록레벨로 선언되기 때문에 안전하다.
- 선언만 먼저
호이스팅되어 선언만 되고, 원래 코드를 만났을때 초기화 후 할당이 이루어진다. 이 텀을
TDZ
이라 부르고, 이 구간에서는 호출되면 초기화가 이루어지지 않았기 때문에 error가 발생한다.