Làm lơ/nhả bỏ tập tin ra khỏi Git Repository

Không phải tất cả các file hay mọi thay đổi xảy ra trên thư mục làm việc đều cần được commit vào repository. Các file mã biên dịch, các file logs, các file tạm thời của môi trường phát triển (chẳng hạn .idea, .node_modules...) là các ví dụ điển hình. Chúng ta có thể “bảo” Git đừng track (làm lơ) các file đó, thông qua chức năng gitignoregitexcule.

Nội dung của bài viết này sẽ trả lời câu hỏi How cho các kỹ thuật:

  • Sử dụng gitignore để tránh hành động track các file
  • Chỉ bỏ qua các file trên hệ thống hiện tại
  • Bỏ qua các file trên tất cả các repository của hệ thống hiện tại
  • Nhả bỏ một file đã được commit ra khỏi repository

Sử dụng gitignore để tránh hành động track các file

Tạo các tập tin .gitignore

Tạo một tập tin có tên .gitignore vào đâu đó trên thư mục làm việc. Bất kỳ file nào được liệt kê vào đây sẽ ngay lập tức được làm lơ khi Git tổ chức staging – điều có nghĩa là các thay đổi sẽ không được đưa vào commit.

touch .gitignore

Git áp dụng .gitignore vào các file của thư mục mà nó đứng. Mặc dù không có hạn chế nào cả về số lượng lẫn vị trí, chúng ta nên đặt một file .gitignore duy nhất vào thư mục root của dự án để tránh lộn xộn.

Cấu hình tập tin .gitignore

Sửa .gitignore như một tập tin text thông thường.

vim gitignore

Nội dung là dấu hiệu nhận diện tên file, phần mở rộng, hay đường dẫn. Bạn có thể sẽ muốn tham khảo tài liệu đầy đủ tại đây.

# Jetbrains IDEs files
*.iml
.idea

# ng project file
.node_modules
.builds
.outs

Commit tập tin gitignore

Sự hiện diện của .gitignore là đủ để gitignore hoạt động. Nhưng hành động đưa repository giúp lưu tồn lâu dài cũng như chia sẻ cấu hình gitignore với các nhà phát triển khác.

git add .gitignore
git commit

Lờ một tập các file, chỉ trên hệ thống hiện tại

Việc sử dụng gitignore thường kéo theo hành động bổ sung .gitignore vào repository và chia sẻ với các nhà phát triển khác. Nếu chỉ muốn làm lơ trên máy tính hiện tại, có thể chỉnh sửa tập tin .git/info/exclude trên repository. Tập tin này có cấu trúc và tác dụng tương tự như .gitignore, nhưng nó không được chia sẻ với các repository khác,

vim .git/info/exclude

Làm lơ một tập các file, trên toàn bộ các repository của hệ thống

Bạn có thể đặt ở đâu đó một tập tin gitignore có tác dụng trên tất cả các repository của hệ thống hiện tại, sau đó sử dụng lệnh git info: để khai báo vị trí của file này cho Git:

git config core.excludesfile C:\Users\_\.gitignore_global

Nhả bỏ một tập tin đã được commit ra khỏi repository

Tạm thời nhả bỏ

Với hành động này, bạn tạm thời làm lơ những thay đổi trên một tập tin đã được commit, nhưng không chia sẻ hành động đó với các nhà phát triển khác. Điều này hay xảy ra khi bạn đặt chỉnh sửa cấu hình dự án (các file package.json, build.gradle…) khác với những người khác:

git update-index --skip-worktree <file>

Để tiếp tục track tập tin như cũ:

git update-index --no-skip-worktree <file>

Một cách làm khác là chỉ định Git “giả sử” rằng file không hề được thay đổi:

git update-index --assume-unchanged <file>

Trong trường hợp đó, sử dụng câu lệnh sau đây để tiếp tục track tập tin như cũ:

git update-index --no-assume-unchanged <file>

Nhả bỏ vĩnh viễn

Việc liệt kê một tập tin đã được commit từ trước vào .gitignore là không đủ ý nghĩa để nhả bỏ vĩnh viễn một file.

Các câu lệnh dưới đây bỏ tập tin ra khỏi repository, nhưng không xóa tập tin ra khỏi thư mục hiện hành:

git rm --cached <file>

Sau đó bạn có thể commit thao tác nhả bỏ:

git commit

Cũng như bổ sung tập tin vào .gitignore, nếu muốn.

Loading

Leave a Reply

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