Cách viết Gitignore Pattern hiệu quả
December 15, 2021

## 2) Directory Pattern `{**}/` Ignore file với path có chứa 0 hay nhiều sub-directory chỉ định. Dấu ** chỉ dùng để match directory. `{sub}/` Ignore file với path có chứa sub-directory chỉ định.
## 3) Name Pattern (`*, ?, [09], [az]`) Name Pattern có thể sử dụng độc lập hoặc kết hợp với Directory Pattern để thoả mãn cả 2 yêu cầu về directory và file name. Name-Pattern gồm các pattern dưới đây. * `{name.type}` ignore file có name và type chỉ định. * Dấu * đại diện cho nhiều ký tự, ví dụ: * `*.{type}` ignore file có type chỉ định. * `{name}.*` ignore file có name chỉ định. * `{name}*.{type}` ignore file với name có postfix chỉ định, type xác định. * Dấu ? đại diện cho 1 ký tự bất kỳ. * [09] đại diện cho 1 ký tự bất kỳ từ 0 --> 9. * [az] đại diện cho 1 ký tự bất kỳ từ a --> z.
Lưu ý: * Dấu (*) có thể sử dụng cho File Name và Directory Name, trong khi (**) chỉ dùng cho Directory Name. * Các Regex (?, [09], [az]) chỉ sử dụng được cho File Name. * Cách và vị trí sử dụng các regex (?, [09], [az]) trong pattern tương tự dấu (*).
## 4) Negative Ignore (`!`) Dấu (!) dùng để cho phép commit các case đặc biệt nếu trước đó đã bị ignore.
// SAMPLE 1 *.log # ignore tất cả file *.log !important.log # cho phép commit pattern important.log // SAMPLE 2 debug[09].log # ignore debug0.log, debug1.log,..., debug9.log debug[!13].log # cho phép commit pattern debug1.log, debug2.log, debug3.log. // SAMPLE 3 debug[09].log # ignore 0,1,2,3,4,...,9 debug[!13].log # cho phép 1,2,3 debug2.log # ignore 2 (pattern khai báo sau có độ ưu tiên cao hơn) # => KẾT QUẢ CUỐI: sẽ ignore 0,2,4,5,...9## 5) Sample
// ignore file has specific extension *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar // ignore files by specific directory's name node_modules/ build/ xcuserdata/ ## XCode's User settings // ignore file by specific name, directory's name. // In fact, if you make file with name .npm or .env, Git also ignore them. .npm .env // ignore file in specific directory from ROOT. /.npm/ // ignore file's name with "png" postfix and dir-path with "fastlane/screenshots/" fastlane/screenshots/**/*.png