.gitignore bị bỏ qua bởi Git


1513

.gitignoreTệp của tôi dường như bị bỏ qua bởi Git - .gitignoretệp có thể bị hỏng không? Git mong đợi định dạng tệp, ngôn ngữ hoặc văn hóa nào?

My .gitignore:

# This is a comment
debug.log
nbproject/

Đầu ra từ git status:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

Tôi muốn debug.lognbproject/không xuất hiện trong danh sách các tập tin chưa được theo dõi.

Tôi nên bắt đầu tìm cách khắc phục điều này ở đâu?


56
Hãy chắc chắn rằng .gitignoretập tin của bạn sử dụng ANSIhoặc UTF-8mã hóa. Nếu nó sử dụng cái gì đó khác Unicode BOM, thì Git không thể đọc tệp.
ADTC

8
@ADTC đây chính xác là sự cố trên máy của tôi (Windows). Tôi đã sử dụng echo "file" > .gitignoretrong PowerShell, tệp có mã hóa UCS-2!
MarioDS

7
git rm --cached debug.log nbproject/
Gayan Weerakutti

4
Tại sao bình luận đầu tiên ở đây không phải là một câu trả lời nằm ngoài tôi
RedOrav

2
@MattParkins Cảm ơn!
RedOrav

Câu trả lời:


3121

Ngay cả khi bạn chưa theo dõi các tệp cho đến nay, Git dường như có thể "biết" về chúng ngay cả sau khi bạn thêm chúng vào .gitignore.

CẢNH BÁO: Trước tiên hãy cam kết những thay đổi hiện tại của bạn, hoặc bạn sẽ mất chúng.

Sau đó chạy các lệnh sau từ thư mục trên cùng của kho Git của bạn:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"

8
Tôi đã nhận được "cách sử dụng: git rm [tùy chọn] [-] <file> ..." khi tôi thử "git rm -r --cached". Nếu có vấn đề, tôi đang sử dụng Git từ bên trong PowerShell sau khi nhấp vào "Công cụ-> Mở trình bao ở đây" trong GitHub cho Windows.
Soonts

61
trên Windows: git rm. -r --cached git thêm.
Beachhouse

90
Hãy lưu ý để cam kết tất cả các thay đổi của bạn trước đây, nếu không bạn sẽ mất quyền kiểm soát tất cả các tệp đã thay đổi !!
Cosmin

45
3 người bình luận đầu tiên dường như đã bỏ lỡ dấu chấm cuối cùng. Điều này có nghĩa là mọi tập tin. "git -rm -r - đã tham gia." <- chú ý dấu chấm.
Barshe De Troyer

18
Nếu bạn không muốn cam kết, một cách giải quyết là đặt các thay đổi của bạn lên giá: "git stash". Chạy các lệnh trên. và chạy "git stash pop"
Ivan Voroshilin

335

Nếu có vẻ như Git không nhận thấy những thay đổi bạn đã thực hiện đối với .gitignoretệp của mình , bạn có thể muốn kiểm tra các điểm sau:

  • Có thể có một .gitignoretệp toàn cầu có thể can thiệp vào tệp cục bộ của bạn
  • Khi bạn thêm một cái gì đó vào tệp .gitignore, hãy thử điều này:

    git add [uncommitted changes you want to keep] && git commit
    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"
    
  • Nếu bạn xóa một cái gì đó khỏi tệp .gitignore và các bước trên có thể không hoạt động, nếu bạn thấy các bước trên không hoạt động, hãy thử điều này :

    git add -f [files you want to track again]
    git commit -m "Refresh removing files from .gitignore file."
    
    // For example, if you want the .java type file to be tracked again,
    // The command should be:
    //     git add -f *.java
    

3
Có lẽ bạn có thể chỉnh sửa câu trả lời của @AlinHuruba để thêm bước 3 của bạn?
Benj

@Benj Cảm ơn lời khuyên của bạn, tôi đã không tìm thấy câu trả lời của AlinHuruba, tôi không biết sự khác biệt là gì, vì vậy xin vui lòng cho tôi biết trực tiếp.
ifeegoo

2
Bước 3 là những gì tôi cần. Hầu hết các câu trả lời chỉ cho biết làm thế nào để loại bỏ các tập tin mà chúng tôi muốn mở khóa. Cảm ơn quan điểm ngược lại.
Yeung

Hy vọng điều này sẽ giúp bạn!
ifeegoo

7
git rm -r --cached .làm việc cho tôi
Jason

198

Đã sửa. OK, tôi đã tạo tệp .gitignore trong Notepad trên Windows và nó không hoạt động. Khi tôi xem tệp .gitignore trên Linux, nó trông giống như tiếng vô nghĩa có tổ chức - có lẽ Notepad đã viết ra Unicode chứ không phải ASCII hoặc bất cứ điều gì 8 bit.

Vì vậy, tôi đã viết lại tệp trên hộp Linux của mình và khi tôi kéo nó trở lại vào Windows, nó hoạt động tốt! Tiếng hoan hô!


77
Trong Notepad, chỉ cần chọn mã hóa "ANSI" trong hộp thoại "Lưu dưới dạng". Hoặc tốt hơn nữa, hãy có một trình soạn thảo văn bản phù hợp - sau tất cả, bạn là một lập trình viên :) ... Tôi có thể đề xuất "Notepad của lập trình viên", những người khác thích Notepad ++ và có hàng trăm thứ khác ngoài đó.
0xC0000022L

1
hehe, vâng, tôi nên tạo ra nó trong netbeans (mà tôi đang sử dụng vào thời điểm đó), nhật thực hoặc studio hình ảnh. Tôi chỉ gọi nó từ dòng lệnh nghĩ rằng nó sẽ không tạo ra sự khác biệt.
Matt Parkins

8
Vấn đề của tôi cũng tương tự - .gitignore của tôi đã sử dụng UTF8 với BOM . Chỉ cần lưu nó dưới dạng UTF8 mà không cần BOM và nó bắt đầu hoạt động một cách kỳ diệu.
Phil

13
Đây là vấn đề của tôi là tốt. Tôi đã tạo tệp .gitignore bằng "echo dirName> .gitignore" vì Windows khiến việc tạo các tệp bắt đầu bằng "." Mã hóa của tệp được tạo theo cách này không thể đọc được bởi git và thay vào đó, nó diễn giải nó dưới dạng tệp nhị phân. Nhấp vào "Mã hóa -> UTF-8" trong Notepad ++, lưu, thực hiện.
Laura

4
Có vấn đề tương tự như @Laura trong powershell - tệp theo mặc định được lưu dưới dạng UTF16.
mrówa

113

Nếu không thêm một cam kết khác vào dự án của bạn, một dòng sẽ đủ để thực hiện .gitignorecông việc như được yêu cầu:

git rm -r --cached debug.log nbproject

Điều này sẽ loại bỏ chúng khỏi kho lưu trữ, nhưng vẫn giữ chúng về mặt vật lý. Nói một cách dễ hiểu, nó sẽ xóa mọi lịch sử thay đổi liên quan đến chúng và cũng sẽ không theo dõi sự thay đổi của chúng trong bất kỳ cam kết nào trong tương lai. Bạn có thể tìm thấy một lời giải thích tốt hơn ở đây .


1
Hoạt động chính xác như tôi muốn - Tôi chỉ có 1 tệp không được theo dõi đúng. Tôi đã lưu nội dung của nó trong notepad và đã làm: git rm -r --cached someFile.phpvà nó hoạt động như một bùa mê :)
ShayLivyatan

@FMFF Điều này sẽ xóa nó khỏi kho lưu trữ nhưng vẫn giữ chúng một cách vật lý, bằng tiếng Anh đơn giản, nó sẽ xóa mọi lịch sử thay đổi liên quan đến chúng và cũng sẽ không theo dõi sự thay đổi của chúng trong bất kỳ cam kết nào trong tương lai. Một giải thích tốt hơn bạn có thể tìm thấy ở đây: stackoverflow.com/questions/37279654/NH
H Aßdø tựa

Tôi nhận được một "fatal: pathspec 'debug.log' không khớp với bất kỳ tập tin nào"
Michael

45

Một nguyên nhân khác của vấn đề này là khoảng trắng hoặc tab trống trước câu lệnh:

Thí dụ:

# Be aware of the following:
 notWorkingIgnore.*
workingIgnore.*

Và như được chỉ ra bởi các bình luận bên dưới một không gian dấu cũng có thể là một vấn đề:

# Be aware of the following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace

11
Một khoảng trống là vấn đề của tôi, thậm chí còn khó tìm hơn.
amr

3
cũng có một vấn đề khoảng trắng kéo dài.
Trefex 22/03/2015

3
Vâng, giống nhau ở đây. Tôi nghĩ rằng tôi có thể viết bình luận sau khi mẫu tập tin : *.txt # Tex files. Nhưng git hiểu: "Bỏ qua các tệp có phần mở rộng txt "
Adam Libuša

3
Lời của tôi, tôi đã mất 2 ngày để tìm câu trả lời 15 câu hỏi này. Điều này xứng đáng hơn.
fordcars

2
Bạn vừa giải quyết một vấn đề tôi gặp phải trong nhiều tháng ... Cảm ơn bạn!
Arkellys

36

Tôi nhận thấy rằng mã hóa của .gitignorenó có ảnh hưởng - nếu tệp là Unicode, nó bị bỏ qua, nếu là ASCII, thì không.

Quá trình:

  1. Xác minh trạng thái: PS> git status
  2. Tạo một chức năng để Get-FileEncoding
  3. Kiểm tra .gitignoremã hóa:PS> Get-FileEncoding .gitignore
  4. Thay đổi mã hóa thành ASCII:PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Xác nhận: PS> git status

5
1000 cảm ơn vì điều này. Tôi đã tạo tệp .gitignore trên hệ thống của mình bằng cách sử dụng touch .gitignoreecho ".db" >> .gitignoređịnh tuyến thông qua powershell. Tôi thấy rằng echo ".db" >> .gitignore"đã cài đặt mã hóa tệp thành UCS-2 LE-BOM, một chuyển đổi nhanh sang ASCII và gitignore bắt đầu hoạt động.
B-Rad

2
Bạn có thể thử bằng cách bỏ qua Bước 2 & 3.
Aniket Bhansali

32

Cũng như các giải pháp khác, trước tiên hãy cam kết và lưu ý rằng bạn sẽ mất mọi thay đổi không cam kết.

Tôi đã có kết quả tốt hơn với điều này:

git rm -r --cached .
git reset HEAD --hard
git status

Lưu ý rằng trạng thái không nên có bất kỳ tập tin sửa đổi nào.


2
cái này không hiệu quả với tôi nhưng câu trả lời của ifeegoo thì có
fanny

21

Trong trường hợp của tôi, đó là vì các tệp đã tồn tại trong kho lưu trữ và tôi đang cố gắng bỏ qua nó.

Đây là những điều tôi đã làm để khắc phục vấn đề:

  • Sao chép các tập tin vào một thư mục tạm thời
  • Loại bỏ chúng khỏi thư mục dự án của tôi.
  • Cam kết những thay đổi loại bỏ các tệp đó khỏi kho lưu trữ
  • Đã thêm lại các tệp đó vào thư mục dự án của tôi

Đến lúc đó, mọi thay đổi tôi thực hiện trên các tệp đó đều bị bỏ qua.

Tôi nghĩ bạn không thể bỏ qua các tập tin đã tồn tại trên kho lưu trữ.


Trong trường hợp của tôi, họ đã được dàn dựng. Chỉ sau khi làm những gì bạn đề xuất, sau đó cố gắng cam kết và nhìn thấy cảnh báo rằng họ đã được dàn dựng và bị xóa tôi mới nhận ra đó là vấn đề.
dudeNumber4

19

Tất cả các câu trả lời ở đây thực sự là cách giải quyết. Bạn cần tạo tệp .gitignore trước khi chạy git init. Nếu không gitsẽ không bao giờ biết bạn cần bỏ qua các tệp đó, vì chúng đã được theo dõi.

echo .idea/ >> .gitignore
git init

Nếu bạn phát triển hàng ngày, tôi khuyên bạn nên thêm các tệp bị bỏ qua theo thói quen vào ~/.gitignore_globaltệp của mình . Bằng cách đó, gitbạn sẽ biết tệp nào của bạn (có nghĩa là "người dùng của bạn", vì đó là tệp trong thư mục chính của bạn) thường bỏ qua.


Cảm ơn chúa ... cuối cùng là một giải pháp hiệu quả với tôi.
Dbl

~/.gitignore_globallà một tên cấu hình. Chạy git config --global core.excludesfiletrước để xem bạn đã có tệp được xác định chưa. Nếu không, hãy chạy git config --global core.excludesfile ~/.gitignore_global.
Noumenon

Một cách giải quyết nếu bạn không tạo .gitignoretrước: đổi tên tệp được theo dõi. .gitignoresẽ được áp dụng như thể nó là mới.
Noumenon

15

Ngoài ra kiểm tra thư mục nơi bạn đặt .gitignore.

Nó nên nằm trong thư mục gốc của dự án của bạn :

./myproject/.gitignore

Không trong

./myproject/.git/.gitignore

9

Cụ thể cho người dùng Windows: Nếu bạn có các tệp không bị theo dõi và xóa / xóa các tệp được lưu trong bộ nhớ cache không hoạt động. Hãy thử mở PowerShell và chuyển đổi tệp .gitignore sang mã hóa UTF-8:

$Myfile = Get-Content .\.gitignore`
$Myfile | Out-File -Encoding "UTF8" .gitignore

Bạn chỉ cần thực hiện việc này một lần để mã hóa tệp .gitignore cho thư mục đó và vì sau đó tệp được mã hóa chính xác, bất cứ khi nào bạn chỉnh sửa tệp trong tương lai, nó sẽ hoạt động. Tôi tin rằng điều này là do trục trặc với GitHub khi không đọc được mã hóa không phải UTF-8 cho tệp .gitignore. Theo như tôi biết thì vấn đề này vẫn chưa được giải quyết cho Windows. Nó không phải là một thỏa thuận quá lớn, chỉ là một nỗi đau để gỡ lỗi khi nó không hoạt động.


8

Có một vấn đề khác .gitignorecó thể xảy ra, đặc biệt là đối với người dùng Windows. Git không thích nó khi bạn đặt tên .gitignore(chẳng hạn như unity.gitignore).

Bạn sẽ luôn muốn đặt tên cho nó .gitignorehoặc trên Windows, .gitignore.vì Windows nghĩ rằng bạn đang cố đổi tên nó mà không có tên tệp.


7

Tôi chỉ gặp vấn đề này. Nội dung trong tệp .gitignore của tôi tiếp tục xuất hiện trong danh sách các tệp không bị theo dõi.

Tôi đã sử dụng điều này để tạo tập tin bỏ qua:

echo "node_modules" > .gitignore

Nó chỉ ra rằng các trích dẫn kép đã gây ra vấn đề cho tôi. Tôi đã xóa tập tin bỏ qua và sau đó sử dụng lại lệnh mà không có dấu ngoặc kép và nó hoạt động như mong đợi. Tôi không cần phải làm rối với mã hóa tập tin. Tôi đang sử dụng máy Windows 10 bằng Cmder .

Thí dụ:

echo node_modules > .gitignore

Thật kỳ lạ, câu lệnh echo này đã khắc phục một sự cố mà tôi gặp phải cục bộ trong đó một tệp bị bỏ qua mà tôi đã xóa một cách tình cờ và sau đó được tạo lại đang hiển thị dưới dạng một tệp có thể gắn được, không bị theo dõi. Vì một số lý do, mặc dù điều này không thay đổi tập tin bỏ qua của tôi, nó đã khắc phục vấn đề của tôi.
Patrick

6

Đối với tôi không có câu trả lời trước làm việc. Tôi đã phải sao chép .gitignorevăn bản vào exclude.txttập tin được tìm thấy tại

<Your-project-folder>\.git\info

Sau khi hoàn thành, hãy làm mới các thay đổi của bạn và tất cả các tệp không bị theo dõi sẽ biến mất. Cam kết như bình thường.


6

Vấn đề của tôi là (như OP đề xuất) một tệp .gitignore bị hỏng. Tôi đã không tin rằng nó đã và bỏ qua khả năng cho đến khi mọi thứ khác thất bại. Tham nhũng không xuất hiệnvi , nhưng có hai byte khi bắt đầu tệp khiến tệp .gitignore bị bỏ qua. Đối với tôi, những thứ này chỉ xuất hiện khi tôi gõ cat .gitignore, cho thấy:

��# Built application files
*.apk
*.ap_

# ...

Tôi không biết làm thế nào những thứ này kết thúc ở đó, nhưng việc tạo lại tập tin đã khắc phục vấn đề. Một phân tích hex của tệp bị hỏng cho thấy như sau:

user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.

2
Trông giống như một dấu thứ tự byte UTF-16 trong tệp được mã hóa UTF-8. vi.wikipedia.org/wiki/Byte_order_mark
jsageryd

6

Tôi gặp vấn đề này, với tệp .gitignore chứa dòng này:

lib/ext/

Tôi chỉ nhận ra rằng trên thực tế, thư mục này là một liên kết tượng trưng đến một thư mục ở một nơi khác:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

Trên đường dây lib/ext/, Git thực sự tìm kiếm một thư mục , nhưng liên kết tượng trưng là một tệp , vì vậy libthư mục của tôi không bị bỏ qua.

Tôi đã sửa lỗi này bằng cách thay thế lib/ext/bằng lib/exttrong tệp .gitignore của tôi.


5

Tôi có vấn đề này như nhau. Tôi tin rằng vấn đề là sự khác biệt giữa CR và CR + LF. Tôi đã sắp xếp mọi thứ trong .gitignore của mình bằng cách sử dụng CMD (trên Windows 7) và lệnh sau:

Xấu:

echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore

Vân vân.

Vấn đề là lệnh này không đặt điểm đánh dấu cuối dòng chính xác để Git nhận ra các dòng mới (CR hoặc CR + LF khi Git mong đợi cái khác). Tôi đã giải quyết vấn đề bằng cách thay thế thủ công từng dòng mới trong Vim (Vim để giải cứu!) Và nó đã hoạt động hoàn hảo.

Hãy thử chỉnh sửa .gitignore của bạn trong Notepad ++ hoặc Vim (lý tưởng). Ngay cả khi tệp trông giống như định dạng chính xác, hãy thử thay thế các dòng mới. Nghe có vẻ lạ, tôi biết, nhưng nó làm việc cho tôi. : D



3

Một điều cũng cần xem xét: Bạn có đang lưu tệp .gitignore của mình với các kết thúc dòng chính xác không?

Các cửa sổ:

Nếu bạn đang sử dụng nó trên Windows, bạn có đang lưu nó với các kết thúc dòng Windows không? Không phải tất cả các chương trình sẽ làm điều này theo mặc định; Notepad ++ và nhiều trình soạn thảo PHP mặc định cho các kết thúc dòng Linux, vì vậy các tệp sẽ tương thích với máy chủ. Một cách dễ dàng để kiểm tra điều này, là mở tệp trong Windows Notepad. Nếu mọi thứ xuất hiện trên một dòng, thì tệp đã được lưu với các kết thúc dòng Linux.

Linux:

Nếu bạn gặp sự cố với tệp làm việc trong môi trường Linux, hãy mở tệp trong trình chỉnh sửa như Emacs hoặc nano . Nếu bạn thấy bất kỳ ký tự không in được, thì tệp đã được lưu với các kết thúc dòng Windows.


3

Một lý do có thể khác - một vài trường hợp khách hàng Git chạy cùng một lúc . Ví dụ: "git shell" + "GitHub Desktop", v.v.


Điều này đã xảy ra với tôi. Tôi đã sử dụng "GitHub Desktop" làm máy khách chính và nó đã bỏ qua một số cài đặt .gitignore mới: commit sau commit:

  1. Bạn cam kết một cái gì đó.
  2. Tiếp theo, cam kết: nó bỏ qua các cài đặt .gitignore. Cam kết bao gồm rất nhiều tệp tạm thời được đề cập trong .gitignore.
  3. Xóa bộ nhớ cache Git; kiểm tra xem .gitignore có phải là UTF-8 hay không; xóa tệp → cam kết → di chuyển tệp trở lại; bỏ qua một cam kết - không có gì giúp được

Lý do : trình soạn thảo Visual Studio Code đang chạy trong nền với cùng một kho lưu trữ đã mở. Visual Studio Code có kiểm soát Git tích hợp và điều này tạo ra một số xung đột.

Giải pháp : kiểm tra kỹ nhiều máy khách Git ẩn, chỉ sử dụng một máy khách Git tại một thời điểm, đặc biệt là trong khi xóa bộ đệm Git.


3

Đã có một số câu trả lời tuyệt vời rồi, nhưng tình hình của tôi thật tẻ nhạt. Tôi đã chỉnh sửa nguồn của phần mềm PLM (quản lý vòng đời sản phẩm) đã cài đặt trên Win10 và sau đó đã quyết định, "Có lẽ tôi nên biến nó thành một repo git."

Vì vậy, tùy chọn bộ đệm sẽ không hoạt động đối với tôi, trực tiếp. Đăng bài cho những người khác có thể đã thêm kiểm soát nguồn SAU khi thực hiện một loạt công việc ban đầu VÀ .gitignorekhông hoạt động NHƯNG, bạn có thể sợ mất một loạt công việc nên git rm --cachedkhông phù hợp với bạn.

! QUAN TRỌNG: Điều này thực sự là do tôi đã thêm git quá muộn vào một "dự án" quá lớn và dường như bỏ qua .gitignore của tôi. Tôi đã KHÔNG cam kết, bao giờ. Tôi có thể git đi với điều này :)

Đầu tiên, tôi chỉ làm:

rm -rf .git
rm -rf .gitignore

Sau đó, tôi phải có một bức tranh về những thay đổi của mình. Một lần nữa, đây là một sản phẩm cài đặt mà tôi đã thực hiện thay đổi. Quá muộn cho một cam kết đầu tiên của nhánh chủ thuần túy. Vì vậy, tôi cần một danh sách những gì tôi đã thay đổi kể từ khi tôi cài đặt chương trình bằng cách thêm > changed.logvào một trong các cách sau:

PowerShell

# Get files modified since date.
Get-ChildItem -Path path\to\installed\software\ -Recurse -File | Where-Object -FilterScript {($_.LastWriteTime -gt '2020-02-25')} | Select-Object FullName

Bash

# Get files modified in the last 10 days...
find ./ -type f -mtime -10

Bây giờ, tôi có danh sách những gì tôi đã thay đổi trong mười ngày qua (chúng ta đừng thực hiện những thực tiễn tốt nhất ở đây ngoài việc nói, vâng, tôi đã làm điều này với chính mình).

Để có một khởi đầu mới, bây giờ:

git init .
# Create and edit .gitignore

Tôi đã phải so sánh danh sách đã thay đổi của mình với .gitignore đang phát triển của mình, chạy git statuskhi tôi cải thiện nó, nhưng các chỉnh sửa của tôi trong .gitignore được đọc trong khi tôi đi.

Cuối cùng, tôi đã có danh sách các thay đổi mong muốn! Trong trường hợp của tôi, đó là bản tóm tắt - một số chủ đề hoạt động cùng với cấu hình sever xml dành riêng cho việc chạy hệ thống dev với phần mềm này mà tôi muốn đặt lại trong một repo để các nhà phát triển khác lấy và đóng góp vào ... Đây sẽ là chi nhánh chính của chúng tôi, vì vậy cam kết, thúc đẩy, và cuối cùng là CHI NHÁNH cho công việc mới!


2

Chỉ cần xóa thư mục hoặc tệp đã được cam kết trước đó trong Git, bằng lệnh sau. Sau đó, tệp gitignore sẽ phản ánh các tệp chính xác.

    git rm -r -f "folder or files insides"

2

Một điều khó khăn không được đề cập trong các câu trả lời khác ở đây là tệp .gitignore sẽ không hoạt động nếu bạn có nhận xét nội tuyến, như thế này:

foo/bar # The bar file contains sensitive data so we don't want to make this public

Vì vậy, nếu bạn có ý kiến ​​như vậy, hãy thay đổi chúng như thế này:

# The bar file contains sensitive data so we don't want to make this public
foo/bar

2

Cũng có khả năng là bạn đã chỉnh sửa .gitignoretệp bằng sudolệnh. Tôi gặp phải vấn đề tương tự và trong khi thực hiện các lệnh : git status, tôi vẫn có thể thấy các tệp "nên bỏ qua".

Khi chỉnh sửa nano .gitignorethay vì sudo nano .gitignore, tôi có thể thấy sự phản chiếu chính xác.


2

Tôi đã tạo .gitignore bằng echo "..." > .gitignorePowerShell trong Windows, vì nó không cho phép tôi tạo nó trong Windows Explorer.

Vấn đề trong trường hợp của tôi là mã hóa tệp đã tạo và vấn đề đã được giải quyết sau khi tôi đổi nó thành ANSI.


2

Tôi cũng có vấn đề tương tự trên Ubuntu, tôi đã tạo .gitignoretừ thiết bị đầu cuối và nó hoạt động với tôi

touch .gitignore


2

Của tôi không hoạt động vì tôi đã tạo ra một tài liệu văn bản gọi là .gitignore

Thay vào đó, hãy tạo một tài liệu văn bản, mở nó trong Notepad ++ rồi lưu dưới dạng .gitignore

Đảm bảo chọn Tất cả các loại (*. *) Từ danh sách thả xuống khi bạn lưu nó.


Hoặc trong gitbash, chỉ cần sử dụng touch .gitignore


1

Nếu bạn là người dùng Notepad ++ , hãy thử làm như sau:

Mở tệp .gitignore của bạn bằng Notepad ++ và thực hiện:

Menu Chỉnh sửaChuyển đổi EOLĐịnh dạng WindowsLưu .

Hãy thử sử dụng git statuslại và xem nếu nó hoạt động cho bạn.

Tôi đã đăng câu trả lời cho một câu hỏi tương tự ở đây .


1

Đối với tôi đó là một vấn đề khác. Tệp .gitignore của tôi được thiết lập để bỏ qua mọi thứ ngoại trừ nội dung mà tôi nói với nó không bỏ qua. Giống như vậy:

/*
!/content/

Bây giờ điều này rõ ràng có nghĩa là tôi cũng đang bảo Git bỏ qua tệp .gitignore. Đó không phải là vấn đề miễn là tôi không theo dõi tệp .gitignore. Nhưng tại một số điểm, tôi đã cam kết tệp .gitignore. Điều này sau đó dẫn đến tệp .gitignore bị bỏ qua đúng cách.

Vì vậy, thêm một dòng cố định nó:

/*
!/content/
!.gitignore

1

Vấn đề của tôi là tôi đã ghi lại các tập tin để bỏ qua với dấu ngoặc kép "" tách không bằng dấu gạch chéo /.

Điều này đã không làm việc và đã bị bỏ qua bởi git:

"db.sqlite3"
"tdd_venv/"

Điều này làm việc tốt:

/db.sqlite3
/tdd_venv/

Tôi cũng đã kiểm tra mã hóa tập tin của mình trong windows bằng Notepad ++. Mã hóa được đặt thành UTF-8.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.