Sử dụng git ignore ở chế độ offline

0

Git ignore là một tính năng của Git cho phép yêu cầu KHÔNG theo dõi (stag) một danh sách file. Đây là một tính năng rất hữu ích giúp bạn có thể nhanh chóng thêm toàn bộ file/thư mục vào danh sách theo dõi (staging) nhưng đồng thời bỏ qua một số file/loại file không cần theo dõi (như các file tạm).

Trong bài học trước chúng ta đã làm quen với quy trình và một số lệnh git cơ bản. Trong bài học này chúng ta tiếp tục với một số vấn đề nâng cao trong quá trình sử dụng git offline sử dụng git bash.

Git Ignore là gì?

Hãy hình dung tình huống bạn có một project với rất nhiều file và thư mục. Bạn hẳn sẽ không muốn add lần lượt từng file vào danh sách staging.

Như đã biết trong bài trước, lệnh git add có thể thêm tất cả file trong thư mục vào danh sách staging: git add tên_thư_mục hoặc git add ..

Cách thức này rất tiện lợi khi cần thêm nhiều file và thư mục cùng lúc.

Tuy nhiên, trong project thường có nhiều file bạn không muốn theo dõi. Ví dụ, trong Java bạn có lẽ sẽ không muốn theo dõi các file .class (và cũng không muốn đưa chúng vào repository). Tương tự như vậy, bạn sẽ không muốn các file .o (nếu code cho C), hoặc file .pyc (Python).

Bạn có thể thắc mắc: nếu không muốn theo dõi file nào, chỉ cần đơn giản là không đưa nó vào danh sách theo dõi là xong.

Tuy nhiên, hãy ghép nối với tình huống bạn đầu: cần thêm toàn bộ file/thư mục vào danh sách theo dõi khi có số lượng lớn file.

Từ đây phát sinh nhu cầu bỏ qua một số (loại) file nhất định khi đưa vào danh sách theo dõi tất cả file và thư mục.

Git cung cấp tính năng bỏ qua các file bạn không muốn theo dõi: ignore.

Kỹ thuật thực hiện Git ignore khá đơn giản:

(1) tạo file văn bản (plaintext) có tên .gitignore (trực tiếp) trong thư mục repository;

(2) liệt kê danh sách các file/thư mục bạn không muốn theo dõi trong file này;

(3) thêm (git add) file .gitignore vào danh sách staging.

Hãy cùng thực hiện một ví dụ nhỏ dưới đây để học cách sử dụng Git Ignore.

Sử dụng Git Ignore

Bước 1. Tạo repository mới GitIgnoreSample

  1. Tạo thư mục GitIgnoreSample.
  2. Mở git bash và đặt GitIgnoreSample làm thư mục hiện hành (sử dụng các lệnh cd).
  3. Chạy lệnh git init.
  4. Thêm một số file code minh họa: hello.py, world.py, from.py, python.py. Bạn không cần viết nội dung cho các file này. Nếu có sẵn một project nào, bạn có thể copy vào đây cho tiện.
  5. Tạo file badcode.txt trong repository (trực tiếp trong thư mục GitIgnoreSample). Giả sử chúng ta không muốn theo dõi file này.
  6. Chạy thử lệnh git status:
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        badcode.txt
        from.py
        hello.py
        python.py
        world.py

nothing added to commit but untracked files present (use "git add" to track)

Bước 2. Sử dụng tính năng git ignore

(1) Tạo file văn bản (plaintext) với tên gọi .gitignore trực tiếp trong repository (thư mục GitIgnoreSample). Lưu ý tên file có dấu chấm ở đầu.

(2) Mở file .gitignore và thêm tên file badcode.txt vào dòng đầu tiên. Nếu có nhiều file cần bỏ qua bạn lần lượt viết tên mỗi file trên một dòng. Mỗi dòng trong file gitignore được gọi là một luật (rule).

file git ignore trong repository

(3) Chạy lệnh git status:

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        from.py
        hello.py
        python.py
        world.py

nothing added to commit but untracked files present (use "git add" to track)

Để ý rằng file badcode.txt giờ không còn xuất hiện trong danh sách “Untracked files” nữa. Git sẽ coi như không tồn tại file này trong bất kỳ hoạt động nào của mình. Đây chính là tác dụng của git ignore.

Bước 3. Staging và commit

(1) Chạy lệnh git add . để thêm toàn bộ file trên vào danh sách theo dõi.

(2) Chạy lệnh git add commit -m initial_commit:

$ git commit -m initial_commit
[master (root-commit) 5d1c3ec] initial_commit
 5 files changed, 1 insertion(+)
 create mode 100644 .gitignore
 create mode 100644 from.py
 create mode 100644 hello.py
 create mode 100644 python.py
 create mode 100644 world.py

Để ý rằng, dù chúng ta sử dụng git add . (thêm toàn bộ), nhưng khi commit, file badcode.txt không hề xuất hiện. Tính năng git ignore đã loại bỏ badcode.txt khỏi danh sách theo dõi, và do đó không xuất hiện trong commit.

Như vậy, sử dụng gitignore giúp bạn dễ dàng thêm toàn bộ một thư mục nhưng bỏ qua những file không cần theo dõi. Điều này cũng có một hệ quả tốt: lệnh git status sẽ không hiển thị những thông tin về các file bị bỏ qua này.

Lưu ý khi sử dụng Git Ignore

Nếu file .gitignore nằm trực tiếp trong repository nó có thể tác động lên tất cả các file trong repository. Đây là trường hợp sử dụng git ignore chúng ta đã làm quen ở ví dụ trên.

File .gitignore cũng có thể đặt trong thư mục con của repository. Tuy nhiên, khi này nó chỉ có thể tác động lên các file nằm trong thư mục này.

Bạn có thể đặt một file .gitignore trong mỗi thư mục con. Tuy nhiên đây là cách làm không được khuyến khích.

Bạn có thể ignore cả thư mục, thay vì từng file riêng rẽ. Để ignore cả thư mục, bạn chỉ việc đưa tên thư mục tương ứng vào một dòng trong file ignore, giống như khi thực hiện với file.

Trên thực tế, nếu bạn viết dòng “build” trong .gitignore, Git sẽ hiểu “build” có thể là tên file, có thể là tên thư mục.

Nếu “build” là tên thư mục, Git sẽ bỏ qua cả thư mục build và tất cả các file bên trong. Nếu build là một file, Git sẽ bỏ qua file này.

Để chỉ định rõ một tên gọi là thư mục, Git yêu cầu viết ký tự / ở sau tên. Ví dụ “build/” sẽ được Git hiểu là một thư mục. Khi này Git sẽ bỏ qua tất cả các file trong thư mục “build”.

Nếu cần bỏ qua nhiều file/thư mục, bạn lần lượt viết tên mỗi file/thư mục trên một dòng. Mỗi dòng trong gitignore được gọi là một rule (luật).

Để chỉ định nhóm file cần bỏ qua, bạn có thể sử dụng wildcard. Ví dụ, nếu muốn yêu cầu bỏ qua tất cả các file exe, bạn có thể dùng luật *.exe. Nếu muốn yêu cầu bỏ qua tất cả các file bắt đầu bằng temp, bạn có thể dùng luật temp*.

Bạn có thể kết hợp chỉ định nhóm file và thư mục. Ví dụ, nếu muốn yêu cầu bỏ qua các file exe trong thư mục bin (trong dự án C# .NET) bạn có thể dùng luật bin/*.exe.

Bạn cũng có thể dánh dấu “ghi chú” cho một luật bằng cách đặt ký tự # ở đầu dòng. Khi này luật tương ứng sẽ không có tác dụng. Lối viết “ghi chú” trong gitignore giống như viết ghi chú trong Python/PHP/Perl.

Dưới đây là ví dụ một file .gitignore đơn giản:

ví dụ nội dung một file git ignore

Nếu cần sử dụng cho project (sử dụng một trong các framework phổ biến), bạn có thể download file .gitignore tương ứng từ page https://github.com/github/gitignore.

Điều cuối cùng cần lưu ý, file .gitignore chứa các file bạn muốn bỏ qua nhưng chính bản thân file này lại cần được theo dõi. Do vậy bạn luôn phải add file gitignore vào stag.

Kết luận

Trong bài học này chúng ta đã đi sâu vào vấn đề thứ nhất của Git: Git Ignore. Tính năng này giúp loại bỏ một số file khỏi danh sách theo dõi để có thể nhanh chóng thêm tất cả các file còn lại.

Đê sử dụng tính năng này cần tạo file .gitignore trong repository và đặt các luật tương ứng. Mỗi luật viết trên một dòng và sẽ có tác động lên một / một nhóm file / thư mục.

Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần Thảo luận cuối trang.
Nếu cần trao đổi riêng với chúng tôi, hãy gửi email hoặc nhắn tin qua form liên hệ.
Nếu bài viết hữu ích với bạn, hãy giúp chúng tôi chia sẻ tới mọi người.
Đăng ký theo dõi trang facebook để nhận thông tin về bài viết mới.
Tắt Adblocker hoặc whitelist trang để hỗ trợ chúng tôi.
Cảm ơn bạn!

* Bản quyền bài viết thuộc về Tự học ICT. Đề nghị tôn trọng bản quyền. DMCA.com Protection Status
Subscribe
Notify of
guest
0 Thảo luận
Inline Feedbacks
View all comments