git: 중요한 데이터 제거 또는 교체 답변 re: git 기록의 파일에서 텍스트를 대체하는 방법은 무엇입니까?

목차



  • Introduction
  • Examples
  • Email Use Case
  • Definitions
  • Credits

  • BFG Repo Cleaner는 git filter-branch를 사용하는 것보다 빠르고 사용하기 쉽습니다. git log에서 중요한 정보를 편집하는 대부분의 사용 사례를 처리할 수 있습니다.

    계속 진행하기 전에 BFG 설치 지침(위 시리즈 참조)을 읽으십시오. 그렇지 않고 이미 설치되어 있다면 다음 섹션으로 이동하십시오.

    소개

    Accidents happen. We have all been there. You committed sensitive data (e.g. passwords, keys, emails, or phone numbers) to the branch. Ok, no problem. Amend the previous commit. Easy. Right? Wrong.

    This time you didn't realize the mistake until several weeks later. The commit is now baked deep into the repository, making it almost impossible to fix using git. A git rebase is too difficult due to the complexity or amount of the changes. Other methods like git filter-branch might be too slow. Now what?

    [Enter BFG Repo Cleaner]

    BFG is a tool that cleans git repositories of sensitive data. It is easy to use and faster than git filter-branch. Using BFG is easy because it expects "expressions" as input. An "expression" (see definition )은 중요한 데이터가 무엇인지, 검색 방법 및 편집 방법을 설명합니다. BFG는 명령줄 또는 로컬 파일의 입력으로 하나 이상의 식을 예상합니다.

    I will refer to the "expressions file" (see definition ) 예에서. 줄 바꿈으로 구분된 표현식 목록이 포함된 로컬 파일입니다.

    bfg 작성자는 스택 오버플로 응답에서 도구를 사용하는 방법에 대한 예를 제공했습니다(credits 참조).
    $ bfg --replace-text replacements.txt -fi *.php my-repo.git
    교체.txt

    PASSWORD1
    PASSWORD2==>examplePass
    PASSWORD3==>
    regex:password=\w+==>password=
    regex:\r(\n)==>$1
    



    표현 예
    설명


    비밀번호1
    리터럴 문자열 'PASSWORD1'을 '***REMOVED***'(기본값)로 바꿉니다.

    PASSWORD2==>examplePass
    대신 'examplePass'로 교체

    비밀번호3==>
    빈 문자열로 교체

    정규식:비밀번호=\w+==>비밀번호=
    정규식을 사용하여 바꾸기

    정규식:\r(\n)==>$1
    Windows 줄 바꿈을 Unix 줄 바꿈으로 바꾸기


    예제 명령에서 모든 인수의 압축을 풀자
  • --replace-text replacements.txt
  • --replace-text <path: file location describing replacements>
  • replacements.txtexpressions file
  • 에 대한 경로입니다.

  • -fi *.php
  • -fi <glob: files to search>
  • "필터 내용 포함"(-fi) 옵션은 bfg가 "이 파일에서"작업만 수행하도록 지시합니다
  • .
  • .php로 끝나는 모든 파일에서만 교체를 수행하도록 구성되었습니다.
  • bfg가 모든 파일을 검색하도록 하려면 이것을 제거하십시오
  • .

  • my-repo.git
  • <path: folder location of repo>
  • 원하는 리포지토리의 경로입니다
  • .
  • 대상 리포지토리
  • 의 루트에서 bfg를 호출할 때 .(점)을 입력으로 사용합니다.


    이메일 사용 사례

    I want to use BFG to replace my old email since my github account uses a new email.

    important note.
    emails are best stored in configuration files, rather than hard coded into the source.

    For this example, I will be using dummy emails.

    $ bfg -rt replace-email.txt .

    replace-email.txt

    [email protected]==>[email protected]
    
  • [email protected]==>[email protected]
    • [left part of the expression]: [email protected] is the old email I want to replace
    • [middle part of the expression]: ==> indicates to bfg that I want to give it a value for replacing the old email
    • [right part of the expression]: [email protected] is the value that will replace the old email
  • -rt replace-email.txt
  • -rt is the alternative form of --replace-text
  • replace-email.txt is the path to the expressions file
  • 파일과 동일한 디렉토리에서 bfg를 호출하면 파일을 더 쉽게 참조할 수 있습니다
  • .

  • .
  • 점은 내가 대상으로 하는 저장소가 bfg
  • 를 호출하는 현재 디렉토리임을 나타냅니다.


    bfg를 실행하면 현재 분기가 새 커밋으로 다시 작성됩니다. 이 도구를 사용할 때 매우 주의하십시오! 문제가 발생할 경우 작업 중인 브랜치를 새 이름으로 체크아웃하여 복사본을 만드십시오.

    정의

    word description
    expression
    대체할 "the what"및 "the how"를 설명하는 특수 구문

    식 파일
    새 줄로 구분된 expressions을 포함하는 파일입니다.

    학점

  • an interesting alternative ~ BFG





  • 답변 re: git 히스토리의 파일에서 텍스트를 대체하는 방법은 무엇입니까?



    13년 3월 31일


    104





    Git 기록에서 파일을 다시 쓰기 위해 특별히 설계된 git-filter-branch 의 더 간단하고 빠른 대안인 BFG Repo-Cleaner 을 사용하는 것이 좋습니다.
    여기에서 다음 단계를 주의 깊게 따라야 합니다: https://rtyley.github.io/bfg-repo-cleaner/#usage - 하지만 핵심 비트는 바로 이것입니다: BFG's jar을 다운로드하고(Java 7 이상이 필요함) 다음 명령을 실행합니다.




    Open Full Answer

    좋은 웹페이지 즐겨찾기