Skip to content

rebase

branch에서 upstream에 포함되지 않은 커밋들을 선택해 onto로 지정된 새 기준(base) 위에 재적용하는 리베이스 작업을 초기화합니다.

반환된 Rebase를 순회(for (const op of rebase) { ... } 또는 next() 호출)하여 리베이스를 진행하세요.

시그니처

ts
class Repository {
  rebase(
    branch?: AnnotatedCommit | undefined | null,
    upstream?: AnnotatedCommit | undefined | null,
    onto?: AnnotatedCommit | undefined | null,
    options?: RebaseOptions | undefined | null,
  ): Rebase;
}

파라미터

  • branchnull | AnnotatedCommit

    리베이스할 브랜치를 나타내는 Annotated Commit이에요. 일반적으로 브랜치의 HEAD 커밋이에요. 생략하면 현재 체크아웃된 브랜치를 사용해요.

  • upstreamnull | AnnotatedCommit

    리베이스할 커밋의 "원래 기반"을 정의하는 Annotated Commit이에요. 생략하면 일반적으로 리포지토리는 브랜치의 구성된 업스트림을 사용하려고 해요.

  • ontonull | AnnotatedCommit

    선택한 커밋이 적용될 "새 기반"을 지정해요.

  • optionsnull | RebaseOptions

    체크아웃 옵션, 병합 옵션 및 메모리 내 리베이스와 같은 리베이스 동작에 대한 세부적인 제어를 제공해요.

    • checkoutOptionsCheckoutOptions

      Repository::rebase, next()abort() 중에 파일이 작성되는 방식에 대한 옵션이에요. initnext에서는 최소 전략인 GIT_CHECKOUT_SAFE가 기본값이며, abort에서는 Git 의미론을 맞추기 위해 최소 전략 GIT_CHECKOUT_FORCE가 기본값이에요.

      • allowConflictsboolean

        안전 모드에서 충돌이 발생하더라도 체크아웃을 취소하는 대신 안전한 파일 업데이트를 적용해요. 기본값은 false에요.

      • ancestorLabelstring

        충돌의 공통 조상 쪽 이름이에요

      • conflictStyleDiff3boolean

        충돌에 대한 diff3 형식 파일에 공통 조상 데이터를 포함할지 여부를 나타내요. 기본값은 false에요.

      • conflictStyleMergeboolean

        충돌에 대한 일반 병합 파일을 작성할지 여부를 나타내요. 기본값은 false에요.

      • dirPermnumber

        새 디렉터리가 생성될 때 모드를 설정해요. 기본값은 0755에요.

      • disableFiltersboolean

        CRLF 변환과 같은 필터를 적용할지 여부를 나타내요.

      • disablePathspecMatchboolean

        path에서 지정한 경로를 경로 명세가 아닌 정확한 파일 경로로 취급해요.

      • dryRunboolean

        충돌을 확인하지만 실제로 변경을 가하지 않는 드라이런을 수행할지 여부를 나타내요.

      • filePermnumber

        새 파일이 생성될 때 모드를 설정해요. 기본값은 blob에 따라 0644 또는 0755에요.

      • forceboolean

        작업 디렉터리를 목표와 일치시키기 위해 수정된 파일을 무시하는 등의 모든 조치를 취해요.

      • ourLabelstring

        충돌의 공통 측면을 나타내는 우리 이름이에요.

      • overwriteIgnoredboolean

        체크아웃 중에 무시된 파일이 덮어쓰여질지 여부를 나타내요. 기본값은 true에요.

      • pathstring

        체크아웃할 경로를 추가해요. 경로는 disablePathspecMatch가 설정되지 않는 한 <a href="https://git-scm.com/docs/gitglossary.html#Documentation/gitglossary.txt-aiddefpathspecapathspec">pathspec</a> 패턴이에요. 경로가 지정되지 않으면 모든 파일이 체크아웃되고, 그렇지 않으면 지정된 경로만 체크아웃돼요.

      • recreateMissingboolean

        안전 모드에서 존재하지 않는 파일을 생성해요. 기본값은 false에요.

      • refreshboolean

        작업 전에 인덱스와 Git 속성을 디스크에서 새로 고칠지 여부를 나타내요. 기본값은 true에요.

      • removeIgnoredboolean

        작업 디렉터리에서 무시된 파일을 제거해요. 기본값은 false에요.

      • removeUntrackedboolean

        작업 디렉터리에서 추적되지 않는 파일을 제거해요. 기본값은 false에요.

      • safeboolean

        새 파일을 생성할 수 있지만 기존 파일이나 변경 사항을 덮어쓰지 않는 안전한 방식으로 체크아웃이 수행되어야 함을 나타내요. 이것이 기본값이에요.

      • skipUnmergedboolean

        병합되지 않은 인덱스 항목이 있는 파일을 건너떠요. 기본값은 false에요.

      • targetDirstring

        체크아웃할 디렉터리를 설정해요.

      • theirLabelstring

        충돌의 공통 상대 측면을 나타내는 이름이에요.

      • updateIndexboolean

        체크아웃이 업데이트된 파일의 정보를 인덱스에 쓰지 않도록 방지해요. 기본값은 true에요.

      • updateOnlyboolean

        이미 존재하는 파일의 내용만 업데이트해요. 설정하면 파일이 생성되거나 삭제되지 않아요. 기본값은 false에요.

      • useOursboolean

        체크아웃이 충돌 시 파일의 스테이지 2 버전("ours")을 사용하도록 할지 여부를 나타내요. 기본값은 false에요.

      • useTheirsboolean

        체크아웃이 충돌 시 파일의 스테이지 3 버전("theirs")을 사용하도록 할지 여부를 나타내요. 기본값은 false에요.

    • inmemoryboolean

      이는 메모리 내 리베이스를 시작하여 호출자가 리베이스 작업을 단계적으로 진행하고 리베이스된 변경 사항을 커밋할 수 있게 하지만, HEAD를 전환하거나 리포지토리가 리베이스 상태로 업데이트되지 않도록 해요. 작업 디렉터리(있는 경우)와 간섭하지 않아요.

    • mergeOptionsMergeOptions

      next() 동안 트리를 병합하는 방식을 제어하는 옵션이에요.

      • diff3Styleboolean

        diff3 스타일 파일을 생성해요.

      • failOnConflictboolean

        충돌이 발생할 경우, 계속해서 충돌 해결을 시도하지 않고 즉시 종료해요.

      • filFavorFileFavor

        충돌 해결을 위해 선호할 측을 지정해요.

      • findRenamesboolean

        파일 이름 변경을 감지해요.

      • ignoreWhitespaceboolean

        모든 공백을 무시해요.

      • ignoreWhitespaceChangeboolean

        공백의 양의 변경을 무시해요.

      • ignoreWhitespaceEolboolean

        행 끝의 공백을 무시해요.

      • minimalboolean

        최소한의 차이를 찾기 위해 추가 시간을 사용해요.

      • noRecursiveboolean

        병합되는 커밋이 여러 병합 기반을 가지고 있는 경우, 이를 병합하여 재귀적인 병합 기반을 생성하지 않고, 대신 단순히 첫 번째 기반을 사용해요.

      • patienceboolean

        "인내심 있는 차이" 알고리즘을 사용해요.

      • recursionLimitnumber

        크리스크로스 병합을 만났을 때 가상 병합 기반을 구성하기 위해 공통 조상을 병합하는 최대 횟수에요. 이 제한에 도달하면 다음 조상은 병합 시도를 중단하고 단순히 사용돼요. 기본값은 무제한이에요.

      • renameThresholdnumber

        파일을 이름 변경으로 간주할 유사도 (기본값 50)이에요.

      • simplifyAlnumboolean

        간소화된 차이 파일을 위해 비 알파벳-숫자 영역을 축소해요.

      • skipReucboolean

        생성된 인덱스에 REUC 확장을 기록하지 않아요.

      • standardStyleboolean

        표준 충돌된 병합 파일을 생성해요.

      • targetLimitnumber

        이름 변경에 대해 검사할 최대 유사도 소스 (기본 200) 이에요. 이름 변경 후보 (추가 / 삭제 쌍)의 수가 이 값을 초과하면 부정확한 이름 변경 감지가 중단돼요. 이 설정은 merge.renameLimit 구성 값을 재정의해요.

    • quietboolean

      다른 클라이언트에게 조용한 리베이스 경험을 제공하도록 지시하여 애플리케이션별 방식으로 이를 제공할 수 있어요. 이는 직접적으로 libgit2에 영향을 미치지 않지만 Git 도구 간의 상호 운용성을 위해 제공돼요.

    • rewriteNotesRefstring

      finish()에서 사용되며, 리베이스가 끝날 때 리베이스된 커밋의 노트를 재작성하는 데 사용되는 노트 참조의 이름이에요. NULL인 경우 구성 옵션 notes.rewriteRef의 내용이 검토돼요. 구성 옵션 notes.rewrite.rebase가 false로 설정된 경우를 제외하고요. notes.rewriteRef도 NULL인 경우 노트는 재작성되지 않아요.

반환 값

  • Rebase

    단계를 반복하고 적용하는 초기화된 리베이스 핸들이에요.

예제

ts
import { openRepository } from 'es-git';

const repo = await openRepository('.');
const branchRef = repo.getReference('refs/heads/other');
const upstreamRef = repo.getReference('refs/heads/main');
const branch = repo.getAnnotatedCommitFromReference(branchRef);
const upstream = repo.getAnnotatedCommitFromReference(upstreamRef);

const sig = { name: 'Seokju Na', email: 'seokju.me@toss.im' };

const rebase = repo.rebase(branch, upstream);
for (const op of rebase) {
  rebase.commit({ committer: sig });
}
rebase.finish(sig);

MIT 라이선스에 따라 배포됩니다.