본문 바로가기
개발/Git, GitHub

깃허브 - RESTful API로 브랜치 만들고 삭제하기 (Create and Delete Branch)

by 피로물든딸기 2023. 9. 2.
반응형

깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기)

 

Git / GitHub 전체 링크

 

참고

- RESTful API로 브랜치 SHA 구하기

- 파일 편집 후 메일 알림이 가도록 수정하기

 

GitHub RESTful API로 브랜치를 만드는 방법은 createRef를 이용한다.

  const makeBranch = async (branchName) => {
    const octokit = new Octokit({
      auth: myKey,
    });

    const currentSHA = await getSHAforMain(octokit);

    const result = await octokit.git.createRef({
      owner: "bloodstrawberry",
      repo: `${repo}`,
      ref: `refs/heads/${branchName}`, // 새로운 브랜치 이름
      sha: currentSHA, // 기반 커밋의 SHA
    });

    return result;
  };

 

이때 기반이 되는 브랜치의 SHA가 필요하다. 여기에서는 메인을 기준으로 만든다.

  const getSHAforMain = async (octokit) => {
    const response = await octokit.git.getRef({
      owner: "bloodstrawberry",
      repo: `${repo}`,
      ref: "heads/main", // main 브랜치의 이름
    });

    return response.data.object.sha;
  };

 

브랜치를 삭제하는 방법은 deleteRef로 가능하다.

브랜치를 만들고 PR을 merge 후 불필요한 브랜치를 삭제할 때 사용할 수 있다.

  const deleteBranch = async (branchName) => {
    const octokit = new Octokit({
      auth: myKey,
    });

    const result = await octokit.git.deleteRef({
      owner: "bloodstrawberry",
      repo: `${repo}`,
      ref: `heads/${branchName}`, // 새로운 브랜치 이름
    });

    console.log("delete!!", result);
  };

 

하지만 PR을 병합한 후, 자동으로 브랜치를 삭제하도록 설정하면 deleteBranch를 사용할 필요가 없다.

 

리포지토리에서 Settings를 선택한 후, 아래로 내려가보자.

 

Automatically delete head branches체크하면, 브랜치에서 PR이 merge된 후, 자동으로 삭제된다.

반응형

댓글