Kubet

  • Thabet
  • Dàn đề
  • Kubet
  • Lô Đề

[Git] Xoá tận gốc rễ một file đã từng push lên github

Chào các bạn ,
Blog chắc bị mốc meo mất rồi. Mình lười viết quá ý, ngày hôm nay rảnh thứ 7 nên ngó qua blog xem tình hình mọi người vào blog có nhiều không 😀

Đều đều 100 views/ngày là vui rồi =)). Lại thấy chủ đề Git là mọi người xem nhiều nhất nên tự dưng lại nghĩ ra một vấn đề mà hôm trước đồng nghiệp cũ hỏi là làm thế nào để xoá tận gốc file mà nó đã từng commit và push lên github/gitlab/… file đó lại ở nhiều nhánh nữa.

Thấy đồng nghiệp hỏi câu này cũng hay nên bắt đầu mò tìm, thực ra thì cũng có người trong cộng đồng họ cũng gặp phải vấn đề này rồi. Mình thì cũng đọc lại của họ rồi giờ chia sẻ lại với mọi người đây.

Bạn đang đọc: [Git] Xoá tận gốc rễ một file đã từng push lên github

Tình huống là mình có 1 project demo “ Hello World ” như hình :
Project demo delete file in git

3 branch: master, dev1, dev2. Cả 3 branchs này đều đang chứa 1 file ActivationTool.zip. File này vô tình mình đã tải lên github và giờ muốn xoá tận gốc (xoá hết ở các commit, các branch) file này.

File ActivationTool.zip lỡ tay push lên cả 3 branch.
Đầu tiên mình nghĩ là click chuột phải rồi xoá file đó đi rồi push lên github thêm 1 commit nữa là được ( 2 năm trước sẽ nghĩ vậy =))) ) .
Xoá file và push thêm 1 commit nữa ở master
Ơ, nào đâu có dễ cưng. Git nó tạo commit là nó đã lưu lại rồi. Ông nào muốn lấy file này chỉ cần reset lùi commit là lấy lại được file thôi, còn chưa nói tới các branchs khác cũng đang có file này nữa. Không làm thế này được. Vậy làm thế nào để trị trường hợp này .
Đây đây, các bạn sử dụng đoạn code sau :

Bước 1: Xoá file ở local

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all

PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA: đường dẫn của file cần xoá tận gốc
Có những file nằm các thư mục khác nhau, nên cần trỏ rõ path chính xác, ví dụ: 
src/main/resources/application-dev.properties

Áp dụng:

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch ActivationTool.zip" \
  --prune-empty --tag-name-filter cat -- --all


Sau khi triển khai câu lệnh trên thì git nó sẽ xoá hàng loạt các file ở local trong các branch và các commit rồi .

Bước 2: Xoá ở remote (hay hiểu là trên github, gitlab, …)

Để xoá được trên remote thì cần push force. Force là ép remote theo cái mới mất mà client gửi lên. Khi dùng cờ force để push này các bạn phải quan sát, kiểm tra lại xem có đúng file các bạn muốn xoá không nhé. Không là toang đấy. =))) Sao lại toang hả? Nó force trên github thì nó xoá hết file ở các commit, branchs. Nhầm sang file quan trọng thì sẽ ra sao? =)))

  1. Lệnh push lên remote:
git push origin --force --all


2. Đối với các phiên bản mà đã release thì cần force cho các tags ở các file phiên bản nữa nhé .

git push origin --force --tags

Vậy là ngon rồi nhé :3

Xem thêm: Cách đánh số trang trong Word 2010 cực nhanh, cực đơn giản

Github : https://github.com/khiemnd5/demo_delete_file_in_git
Tham khảo :
https://docs.github.com/en/anhdao@lesabeilles.biz/github/authenticating-to-github/removing-sensitive-data-from-a-repository

Bình chọn

Share this:

  • Twitter
  • Facebook

Thích bài này:

Thích

Xem thêm: 3 Cách Đánh số Trang trong Word 2010, 2013, 2016 Đơn Giản

Đang tải …

Có liên quan

Source: https://www.lesabeilles.biz
Category: Mạng Internet

Filed Under: Mạng Internet

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Giới Thiệu

Kubet là cái tên đang được quan tâm và nhắc đến nhiều nhất trong làng game đổi thưởng, game cá cược hiện nay, đặc biệt là các game thủ Việt Nam.

Chuyên Mục

  • Dàn đề
  • Du lịch
  • Lô Đề
  • Mạng Internet
  • Nhà Cái
  • Phong thủy

Bài viết mới

  • Nằm mơ rụng răng hàm dưới là điềm gì? Mơ răng rụng báo hiệu điều gì?
  • Nằm mơ thấy gãy răng chảy máu điềm báo gì? Đánh con gì?
  • Nằm mơ thấy gà đẻ trứng đánh con gì? Đánh số mấy dễ trúng?

Copyright 2021 © KUBET