Gitastrophes: 자신의 a$- 두 번째 섹션 저장
12099 단어 gitsoftwareengineering
소개
이 문장은 내가 너에게 이 문장에 들어가기 전에 먼저 살펴보라고 격려한 후속 문장이다.이전 문장과 마찬가지로 이 문장은 중급 또는 더 높은git 기능을 가진 사람을 대상으로 한다.
모두가 알다시피 Git는 강력한 업계 표준 버전 제어 시스템으로 협업을 지원하고 소프트웨어 개발 업무에 역사적인 발자취를 남겼다.
우리가 지난번에 말했던git의 역사적 발자취는 괜찮다고 다시 한 번 말씀드립니다...고집했어따라서 이를 사용하는 과정에서 발생할 수 있는 가장 심각한 재난 중 하나는 기밀, 비밀번호 또는 기타 민감한 정보를 가져와 Github/Gitlab/Bitbucket에서 위탁 관리하는 원격 환매이다.
비록 지난번에 우리는 BFG Repo Cleaner라는 도구를 토론했지만, 나는 그것이 매우 사용하기 쉽다는 것을 발견했지만, 그것은 약간의 한계가 있다.우리는 BFG를 사용하면 a를 청결하게 할 수 있다는 것을 보았다.vv 파일은 우리의 모든 환매와 제출 기록에 있는 민감한 정보를 포함하지만, 이 민감한 정보는 추출 요청의 차이에서 사용할 수 있습니다.
오늘 우리는 도구를 사용할 것이다. 나는 약간 사용하기 어렵지만, 상기 BFG와 할 수 있는 권리를 발견했다.Github 대신 Gitlab을 사용해서 전환할 것입니다. 단지 재미를 위해서입니다.가자!
설치 프로그램
우선 Gitlab에서 환매를 초기화합니다.
로컬에서 복제하고 테스트 파일을 만듭니다. 이 시리즈의 첫 번째 문장에서 같은 설정을 모의할 것입니다.
➜ Desktop git clone [email protected]:jtkaufman737/git-filter-repo.git
Cloning into 'git-filter-repo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
➜ Desktop cd git-filter-repo
➜ git-filter-repo (main) ✗ git checkout -b disaster
Switched to a new branch 'disaster'
➜ git-filter-repo (disaster) ✔ touch .env .gitignore file.js file.py file.go file.sql
➜ git-filter-repo (disaster) ✗ ls
README.md file.go file.js file.py file.sql
➜ git-filter-repo (disaster) ✗
지난번처럼 env 파일에'민감한'정보를 추가한 다음 무시하려고 했지만 의외의 입력 오류 (eek) 를 모의합니다.➜ git-filter-repo (disaster) ✗ cat .env
SECRET=b8ee43a51b6ba41eb873dc83e11dbbcbbb3a2131
SUPER_SECRET=371a648b3dce5636aee0c1425aca8d3d59482ace
NUCLEAR_CODES=359e95931e95032ed8b71534b75c57eb17717d59
➜ git-filter-repo (disaster) ✗ cat .gitignore
.emv
통합 요청을 하기 전에 변경 사항을 추가하고 전송할 때가 되었습니다.➜ git-filter-repo (disaster) ✗ git add .
➜ git-filter-repo (disaster) ✗ git commit -m "First commit, what could go wrong?"
[disaster 827cbb1] First commit, what could go wrong?
6 files changed, 4 insertions(+)
create mode 100644 .env
create mode 100644 .gitignore
create mode 100644 file.go
create mode 100644 file.js
create mode 100644 file.py
create mode 100644 file.sql
➜ git-filter-repo (disaster) ✔ git push origin disaster
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 521 bytes | 521.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for disaster, visit:
remote: https://gitlab.com/jtkaufman737/git-filter-repo/-/merge_requests/new?merge_request%5Bsource_branch%5D=disaster
remote:
To gitlab.com:jtkaufman737/git-filter-repo.git
* [new branch] disaster -> disaster
나는 합병 요청을 열었는데, 지금 우리는 기밀 정보를 포함하는 차이가 생성되는 것을 볼 수 있다...그러나 이 예의 목적을 위해서 우리는 어쨌든 그것을 합병해야 한다.나의 로컬 제출을 제외하고, 우리는 현재 합병 제출이 하나 더 있는데, 그 중에서diff는 우리의 비밀과 이 비밀을 포함하는repo 파일을 보여 준다.
Git filter 복구
지난번에 우리는 BFG Repo Cleaner 을 토론했고 git filter-branch 과 git filter-repo 도 언급했다.
당신들은 내가 첫 부분에서 말했듯이, 나는 이 세 가지 도구에 대한 인용이 헷갈리는 것을 발견했는데, 이것이 바로 내가 BFG에 일찍이 관심을 가지게 된 이유이다.Git filter repo는 Git filter 지점의 발전을 대표하는 것 같습니다. 이 지점은 분명히 결함과 함정이 있습니다.
불행하게도, 내가 발견한 많은 문서들이 여전히gitfilter 지점을 인용하고 있기 때문에, 그렇다. 만약 당신이 긴급한 상황에서 민감한 정보가 환매가 된다면, 모든 충돌 정보 사이를 전환하는 것은 사람을 낙담하게 한다.
그 밖에 나는git filter repo의 문서를 좋아하지 않는다.즉, BFG가 할 수 없는 일을 할 수 있기 때문에 나는 문서를 사용하는 시간이 충분하고 이해할 수 있다는 것을 발견했다.일단 내가 이렇게 한다면, 내가 방금 자신에게 초래한 문제의 해결 방안은 사실은...아주 좋아요...
git filter repo를 사용하여 파일에 대한 모든 인용을 삭제하는 과정은 주 repo를 종료하고
--mirror
로고를 사용하여 새 클론을 만드는 것부터 시작합니다.➜ Desktop git clone --mirror [email protected]:jtkaufman737/git-filter-repo.git
Cloning into bare repository 'git-filter-repo.git'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
➜ Desktop cd git-filter-repo.git
다음으로 우리는 invert paths
라는 명령을 사용할 것이다.나는 이 이름이 좀 이상하다는 것을 발견했다. 내가 상상했던 이름은 아니었지만, 좋았다.반전 경로는 찾으려는 명령으로 모든 참조를 삭제합니다.우리는 역사 속의 env 파일을 원격으로 환매합니다.만약 네가 지난번을 기억한다면, 우리는 파업을 하지 못했다.요청 차이를 병합한 환경 정보...git filter repo가 있으면 우리도 실제로 이런 것들을 바꿀 능력이 있다!너무 좋아요.
명령에 대한 설명은 다음과 같습니다.
git filter-repo --path [file to wipe from history] --invert-paths
우리에게는 이렇게 보인다.➜ git-filter-repo.git (main) ✔ git filter-repo --path .env --invert-paths
Parsed 4 commits
New history written in 0.05 seconds; now repacking/cleaning...
Repacking your repo and cleaning out old unneeded objects
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (9/9), done.
Building bitmaps: 100% (4/4), done.
Total 9 (delta 1), reused 5 (delta 0), pack-reused 0
Completely finished after 0.13 seconds.
이제 모든 업데이트를 적용하기 위해 원격 지점을 지정하지 않은 상태에서 푸시해야 합니다.➜ git-filter-repo.git (main) ✔ git push
Enumerating objects: 9, done.
Writing objects: 100% (9/9), 843 bytes | 843.00 KiB/s, done.
Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
To gitlab.com:jtkaufman737/git-filter-repo.git
+ 566472c...b0db77c main -> main (forced update)
+ ed71ff4...0f18913 refs/merge-requests/1/head -> refs/merge-requests/1/head (forced update)
+ e6a9a4b...d14436e refs/merge-requests/1/merge -> refs/merge-requests/1/merge (forced update)
* [new branch] refs/replace/566472c3d7060d35c448b778d1eed022695efed8 -> refs/replace/566472c3d7060d35c448b778d1eed022695efed8
* [new branch] refs/replace/e6a9a4bf5c9979e7602ffba27f2cbff3a3a46a72 -> refs/replace/e6a9a4bf5c9979e7602ffba27f2cbff3a3a46a72
* [new branch] refs/replace/ed71ff49006e9bb207cf5be0f4575f49f4026408 -> refs/replace/ed71ff49006e9bb207cf5be0f4575f49f4026408
이번에 처음 효과가 났을 때 약간 용두사미가 느껴졌어요...이렇게?그래서 내가 직접 봐야 돼.우선 우리의 환매 협의를 봅시다.아니오엔브이가 좋은 출발을 했다.이제 우리가 본 합병 제출로 돌아가자.이전 차이의 env...
너무 신기하다도망갔어.그렇다면 우리도 이전에 보았던 재난 중의 약속 지점은?
지금은 pies de resistance입니다. BFG가 첫 번째 부분에서 제거할 수 없는 마지막 잔재: 통합 요청의 차이입니다.
엉엉!바로 이렇습니다:git filter repo를 사용하면 5분 또는 더 적은 시간으로 Repo를 정리하고 기록을 제출할 수 있을 뿐만 아니라 인용과 통합 요청의 차이도 정리할 수 있습니다!이 신기한 도구는 조심스럽게 처리해야 하지만git 역사상 민감한 것이 나타나면 그것은 아마도 주요한 구원의 별이 될 것이다.
Reference
이 문제에 관하여(Gitastrophes: 자신의 a$- 두 번째 섹션 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/heyjtk/gitastrophes-saving-your-own-a-part-ii-177g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)