Xoá file đã tồn tại trong git và cập nhật gitignore giữa chừng dự án

Tình huống

Khi khởi tạo dự án, bạn lỡ tay thêm những file build, gen, config, file “rác” vào git, gây cản trở cho việc làm việc nhóm. Bạn muốn gỡ nó ra, nên bạn cập nhật file .gitignore, mong muốn rằng nó sẽ bị gỡ ra. Nhưng đời không như là mơ, mặc dù đã thêm nó vào gitignore nhưng những file đó cứ trơ trơ ra thách thức bạn :))
Để hiểu căn bản về .gitignore file, vui lòng xem bài viết Git ignore và làm việc với .gitignore

Nguyên nhân

Khi bạn khởi tạo git, câu lệnh git add . trước tiên sẽ kiểm tra bộ lọc ở .gitignore và thêm tất cả những file ngoài list ignore vào git và git cache. Một khi nó đã nằm trong git cache, thì việc bạn thêm nó trong gitignore sẽ không có tác dụng.

Giải pháp

Việc trước hết là bạn phải gỡ file đó ra khỏi git cache bằng lệnh git rm -r --cached [/path/to/file], sau đó thêm nó vào .gitignore. Cuối cùng commit file .gitignore và push. Xong.
* Mẹo: Nếu bạn cần gỡ tất cả các file trong folder thì chỉ việc git rm -r --cached [/path/to/folder]

Khoan khoan, thế nếu có rất nhiều file cần gỡ, và nó nằm trong nhiều folder khác nhau thì sao?
Ngoài cách chạy từng lệnh git rm -r --cached [/path/to/folder] một cách thủ công, bạn có thể gỡ tất cả các file đã có trong git cache ra bằng lệnh git rm -r --cached . sau đó cập nhật gitignore và cuối chùng add tất cả những file được cho phép lại bằng lệnh git add . (Xem mục Nguyên nhân ở trên để hiểu hơn về cơ chế chạy lệnh git add .)

Code tí nào

Khởi tạo và cấu hình remote:

Tại sao lại là gh mà không phải origin như bạn vẫn thường làm? Hai cái đó không khác nhau gì hết, bạn vui lòng xem thêm bài viết này để hiểu thêm.
Tạo file .gitignore và vài file khác:

Thực hiện thêm vài nội dung vào 3 file đó, sau đó, cập nhật .gitignore với nội dung:

Rồi add vào git và commit, push

Tham số -u để cấu hình mặc định remote của mình sẽ là gh và nhánh mặc định sẽ là nhánh hiện tại. Từ nay về sau chỉ việc gõ git push là đủ.
Ngoài ra, trong quá trình thao tác, bạn có thể kiểm tra trạng thái của git bằng lệnh git status.
Quá trình thao tác để đưa code lên server
Tiếp theo, remove in_git_but_will_be_ignored_later.txt ra khỏi git, cập nhật nó vào .gitignore và push lại.

Lên github kiểm tra, tada, file in_git_but_will_be_ignored_later.txt đã bị remove, và từ nay nó không dính dáng gì đến git của bạn nữa.

Thêm chút nữa

Lý thuyết là vậy thôi, chứ thực tế mình toàn làm theo kiểu gỡ sạch git cache ra, cập nhật .gitignore, sau đó add lại và cuối cùng commit, push

Lập trình và hơn thế nữa

Spread the love
  •  
  •  
  •  
  •  
  •  

Leave a Reply

2 Comments on "Xoá file đã tồn tại trong git và cập nhật gitignore giữa chừng dự án"

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] không có hiệu lực. Để hiểu rõ hơn về quá trình này, vui lòng đọc bài viết Xoá file đã tồn tại trong git và cập nhật gitignore giữa chừng dự án của […]

trackback

[…] Tạo ssh key và sử dụng ssh key trong git 3. Git ignore và làm việc với .gitignore 4. Xoá file đã tồn tại trong git và cập nhật gitignore giữa chừng dự án 5. git branch và mô hình pull request (Phần 1): git branch 6. git branch và mô hình pull […]