간단한 4단계로 git 저장소 기록에서 실수로 푸시된 파일 제거

8769 단어 gitgithub
git은 파일이 git에 커밋되지 않도록 무시하는 메커니즘을 제공하지만gitignore 저장소에 큰 파일이 있으면 문제가 발생할 수 있습니다.

단순히 rm 파일을 삭제하는 것만으로는 충분하지 않습니다. git은 프로젝트의 루트에 있는 .git 디렉토리에 모든 분기의 모든 기록을 영원히 기록합니다.

1단계: 리포지토리를 백업하세요!



프로젝트 디렉토리를 복사하기만 하면 됩니다.cp -r myproject backup

2단계: 새 파일을 도입한 커밋 식별



가장 쉬운 방법은 git log 실행이라는 파일을 삭제한다고 가정하고 client/public/favicons/red/hugefile.ova 명령의 출력을 보는 것입니다.

$ git log client/public/favicons/red/hugefile.ova
Sat Aug 17 19:16:17 2019 +0300 7ff66fa Add favicons  [Moshe Zada]

보시다시피 커밋7ff66fa이 큰 파일을 도입한 것 같습니다. 역사를 다시 쓰자!

3단계: 과거로 돌아가기



이제 다시 돌아가고 싶은 커밋을 찾았으니 다음을 실행합니다.

git rebase --interactive 7ff66fa~1

이 명령을 실행한 직후 편집기는 7ff66fa에서 마지막 커밋까지의 커밋 기록과 함께 열립니다. 예를 들면 다음과 같습니다.

pick 7ff66fa Add favicons
pick 48d9cc0 Readme (#84)
pick b9f23fd GitBook: [master] 17 pages modified
pick 1e0f4f1 move to docs
pick 23adabf GitBook: [master] 4 pages modified
pick 237c792 revert readme
pick 9418698 Continue reload if had exception
pick 3723c3c Add Copy option to index
pick 1ff0ec1 Add filter for manage aliases
pick 8a8770d Better null message
pick 4d8b64c Subscribe to input change
pick 9bc31b6 Save more data for node stats
pick 546e10b Small fixes

# Rebase 5058e82..eafa06e onto 5058e82 (193 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

git commit으로 시작하는 첫 줄로 이동하여 첫 번째 단어를 문자 e로 변경하여 편집(vimmiers: cwe<ESC> )하고 편집기를 종료합니다(:wq )

4단계: 기록 다시 작성 및 변경 사항 푸시



이제 git은 마지막 커밋을 재생하기 시작하고 잘못된 커밋 직전에 쉘을 제공합니다.
파일을 삭제하십시오:rm client/public/favicons/red/hugefile.ova변경 사항을 git에 추가git add client/public/favicons/red/hugefile.ova리베이스 커밋 및 계속git commit --amend '-S' && git rebase --continue변경 사항 확인 및 변경 사항 푸시

지적해 주신 Joe와 Eugene에게 감사드립니다git push --force. 주의해서 사용해야 합니다.
git push -f 이것에 주의하십시오. -f는 힘을 나타냅니다. 기본적으로 git은 기록을 다시 쓰려고 하면 불평하지만 어쨌든 강제로 갈 수 있습니다. 당신이 단독 프로젝트에 있다면 이것은 괜찮을 것입니다. 그러나 당신이 팀에서 일하고 있다면 아무도 브랜치를 뽑고 그 위에 커밋을 추가하지 않았는지 확인하십시오. 당신은 그들에게 어떤 호의도 베풀지 않을 것입니다.
그것을 사용하는 것을 두려워하지 마십시오. 수행 중인 작업에 대해 팀과 소통해야 합니다.
git push --force
그게 다야 🙂

이 게시물이 유용했습니까? 내 Github 프로젝트에 별⭐️ 추가🙂


모세 / Elasticsearch 동지


운영 및 모니터링을 위해 구축된 Elasticsearch 관리 패널





Elasticsearch 동지


Elasticsearch Comrade는 Cerebro에서 크게 영감을 받은 오픈 소스 Elasticsearch 관리 및 모니터링 패널입니다.
python3, VueJS, Sanic, Vuetify2 및 Cypress로 구축된 Elasticsearch Comrade


주요 특징


  • Elasticsearch 버전 5,6 및 7 지원(elasticsearch 7.7에 대해 테스트됨)
  • 다중 클러스터
  • 자동 완성, 기록, 템플릿 및 기록이 포함된 Rest API
  • SQL 편집기(버전 7만 해당)
  • 대규모 클러스터용으로 구축됨
  • 노드 통계 및 모니터링
  • 별칭 관리
  • 실행 중인 작업 검사
  • 색인 템플릿 관리
  • 스냅샷 관리
  • 그리고 훨씬 더 ...

  • 빠른 시작


    정의 클러스터


    Comrade는 --clusters-dir 매개변수를 사용하여 클러스터를 발견합니다. 문서는 here, 예는 here입니다.

    도커 사용(권장)

    docker run -v $PWD/clusters/:/app/comrade/clusters/ -it -p 8000:8000 mosheza/elasticsearch-comrade

    파이썬 패키지 사용

    pip install elasticsearch-comradecomrade --clusters-dir clusters

    설치, 구성 및 다음 단계


    Here

    로드맵


    v1.1.0



    Python 패키지 추가
    재색인 화면
    동지 대시보드

    v1.2.0


  • 클러스터 설정 화면
  • 샤드에서 노드 비우기
  • 바닥글에 commrade 버전 표시기 추가

  • v1.3.0


  • 비츠스크린
  • Threadpools 화면

  • 스크린샷









    View on GitHub

    좋은 웹페이지 즐겨찾기