.Gitignore chính xác là gì?


212

Tôi vừa tạo một kho lưu trữ Github và đang tự hỏi .gitignoretập tin này dùng để làm gì. Tôi đã bắt đầu bằng cách không tạo một cái, nhưng thêm một cái do thực tế là hầu hết các kho lưu trữ đều có một. Tôi có cần phải có một cái không? Tôi có thể bỏ qua nó không, hay nó có sử dụng không? Tôi đã làm một số nghiên cứu về chủ đề này nhưng không thể tìm thấy một lời giải thích cụ thể.

Câu trả lời:


175

.gitignorecho git biết tập tin (hoặc mẫu) nào nên bỏ qua. Nó thường được sử dụng để tránh cam kết các tệp tạm thời từ thư mục làm việc của bạn không hữu ích cho các cộng tác viên khác, chẳng hạn như các sản phẩm biên dịch, các tệp tạm thời IDE tạo, v.v.

Bạn có thể tìm thấy các chi tiết đầy đủ ở đây .


Vì vậy, nếu bạn tạo một .gitignore trong kho lưu trữ mới trên github.com, sau đó thực hiện git init và git add . trên máy tính cục bộ của bạn - chưa được kết nối với .gitignore vì nó chưa được kết nối với kho lưu trữ đó - làm thế nào để nó hoạt động? Liệu nó có hiệu lực khi tôi thực hiện một cam kết git? Hoặc là?
Xonatron

những gì được _._gitignoresử dụng cho? nó chỉ được sử dụng khi gitignore nó nằm trong một Dir phụ?
Saikat Chakrabortty

Vì vậy, nó vẫn còn cục bộ, nhưng không được đẩy về nguồn gốc? Vì vậy, nếu một số người dùng tải xuống github repo, tập tin bí mật đó có được tải xuống không?
Gặp Zaveri

bỏ qua nghĩa là gì? Ai / cái gì / khi nào bỏ qua? Tôi biết từ bỏ qua có nghĩa là gì nhưng tôi không tìm thấy mô tả rõ ràng về việc bỏ qua nghĩa là gì trong ngữ cảnh của Git. Rõ ràng thuật ngữ này hoàn toàn dễ hiểu bởi những người hiểu nó nhưng bất cứ điều gì được viết để định nghĩa một cái gì đó cho những người chưa biết nó cần phải giải thích tất cả các thuật ngữ có định nghĩa duy nhất cho ngữ cảnh.
dùng34660

1
@ user34660 Bỏ qua có nghĩa là như vậy - Git sẽ không theo dõi các thay đổi trong các tệp được chỉ định bởi (các mẫu) trong .gitignoretệp. Ngay cả khi bạn thay đổi chúng, git sẽ không hiển thị chúng là sửa đổi.
Mureinik

42

Đây là danh sách các tệp bạn muốn git bỏ qua trong thư mục công việc của bạn.

Giả sử bạn đang sử dụng máy Mac và bạn có các tệp .DS_Store trong tất cả các thư mục của mình. Bạn muốn git bỏ qua chúng, vì vậy bạn thêm .DS_Store dưới dạng một dòng trong .gitignore. Và như thế.

Các tài liệu git sẽ cho bạn biết tất cả những gì bạn cần biết: http://git-scm.com/docs/gitignore


2
.DS_StoreKịch bản của bạn cuối cùng đã cộng hưởng với tôi khi tôi đoán rằng tôi đã không bám vào khái niệm này bởi vì tôi chưa cần sử dụng nó trong một dự án. Cảm ơn bạn. Tôi đã kết thúc việc sử dụng này như một điểm khởi đầu khi tôi sử dụng tất cả các hệ điều hành khác nhau, đặc biệt là # OS generated files #phần này.
phoenixlaef

2
Tôi biết tôi đến trễ chủ đề này, nhưng cảm ơn bạn @AndyLester! Tôi là người mới khi nói đến lập trình và Github. Tôi thấy nhiều câu trả lời được viết để giải quyết loại câu hỏi này chứa đầy các thuật ngữ mà người mới có thể không hiểu (nghĩa là các sản phẩm biên dịch, các tệp tạm thời IDE tạo ra .... những thứ này h @ ll là gì!). Tuy nhiên, mô tả Mac của bạn là hoàn hảo trong sự đơn giản thanh lịch của nó!
Vesuccio

21

Khi bạn đang thực hiện một cam kết, bạn không muốn vô tình bao gồm các tệp tạm thời hoặc xây dựng các thư mục cụ thể. Do đó sử dụng một .gitignoredanh sách ra các mục bạn muốn bỏ qua cam kết.

Ngoài ra, quan trọng git status là một trong những lệnh được sử dụng thường xuyên nhất mà bạn muốn git statusliệt kê ra các tệp đã được sửa đổi.

Bạn sẽ muốn git statusdanh sách của bạn trông sạch sẽ từ các tập tin không mong muốn. Chẳng hạn, tôi đã thay đổi a.cpp, b.cpp, c.cpp, d.cpp & e.cpptôi muốn git statusliệt kê các mục sau:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Tôi không muốngit status liệt kê các tệp đã thay đổi như thế này với các tệp & tệp đối tượng trung gian từ thư mục bản dựng

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Do đó, để giúp tôi thoát khỏi git statusviệc liệt kê các tệp tạm thời trung gian này và vô tình đưa chúng vào repo, tôi nên tạo một tệp .gitignoremà mọi người đều làm. Tất cả những gì tôi cần làm là liệt kê ra các tập tin và thư mục .gitignoremà tôi muốn loại trừ khỏi việc cam kết.

Sau đây là của tôi .gitignoređể tránh cam kết các tập tin không cần thiết

/*.cmake
/*.DS_Store
/.user
/build

7

Có những tệp bạn không muốn Git đăng nhập. Git xem mọi tệp trong bản sao làm việc của bạn là một trong ba điều sau:

  1. được theo dõi - một tập tin đã được dàn dựng hoặc cam kết trước đó;
  2. không bị theo dõi - một tập tin chưa được dàn dựng hoặc cam kết; hoặc là
  3. bị bỏ qua - một tệp mà Git đã được thông báo rõ ràng để bỏ qua.

Các tệp bị bỏ qua thường là các tạo phẩm được xây dựng và các tệp do máy tạo có thể được lấy từ nguồn lưu trữ của bạn hoặc nếu không thì không được cam kết. Một số ví dụ phổ biến là:

  • bộ nhớ cache phụ thuộc, chẳng hạn như nội dung của /node_moduleshoặc/packages
  • mã biên dịch, chẳng hạn như .o, .pyc.classfile
  • danh bạ xây dựng đầu ra, chẳng hạn như /bin, /outhoặc/target
  • tập tin được tạo trong thời gian chạy, chẳng hạn như .log, .lockhoặc.tmp
  • tập tin hệ thống ẩn, chẳng hạn như .DS_StorehoặcThumbs.db
  • tập tin cấu hình IDE cá nhân, chẳng hạn như .idea/workspace.xml

Các tệp bị bỏ qua được theo dõi trong một tệp đặc biệt có tên .gitignoređược kiểm tra tại thư mục gốc của kho lưu trữ của bạn. Không có lệnh bỏ qua git rõ ràng: thay vào đó .gitignoretệp phải được chỉnh sửa và cam kết bằng tay khi bạn có tệp mới mà bạn muốn bỏ qua. .gitignorecác tệp chứa các mẫu được khớp với tên tệp trong kho lưu trữ của bạn để xác định xem có nên bỏ qua chúng hay không. Đây là một tập tin mẫu.gitignore . Để biết thêm chi tiết xem liên kết này


5

Mục đích chính của .gitignore - vì vậy bạn tránh thêm các tệp không liên quan, v.v. Git

Tôi có rất nhiều ghi chú cá nhân / những nét vẽ nguệch ngoạc trong một số kho lưu trữ nhất định: chúng hữu ích với tôi nhưng không dành cho ai khác. Tôi không muốn nó được tải lên github bởi vì nó chỉ đơn giản là gây nhầm lẫn cho tất cả những ai đọc nó. Điều tốt là tôi có thể yêu cầu git "bỏ qua" các tệp đó. Chi phí duy nhất cho phương pháp này là tôi sẽ không thể khôi phục các ghi chú đó nếu máy tính của tôi gặp sự cố, v.v.

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.