Cách sử dụng lệnh gitignore trong git


119

Tôi đang làm việc lần đầu tiên trên git. Tôi đã đẩy chi nhánh của mình lên github và nó đã đẩy tất cả thư viện và tài liệu vào github. Bây giờ tôi có thể làm gì và làm thế nào để tôi có thể sử dụng lệnh gitignore để tránh mắc lỗi tương tự một lần nữa.


1
.gitignorelà một tệp trong thư mục gốc git của bạn. Thêm các mẫu tên cho các tệp bạn muốn bỏ qua và các tệp sẽ tự động bị bỏ qua.
LonelyWebCrawler

Tôi đang sử dụng ubuntu. Bạn có thể vui lòng nói con đường của thư mục gốc git
user1559230

2
Đây là thư mục mà bạn đã sử dụng git init. Thư mục .gitnằm ở đó.
LonelyWebCrawler

2
Đối với những người không biết cách sử dụng gitignore - hãy truy cập gitignore.io, bạn có thể gõ tất cả các công cụ bạn đang sử dụng (symfony, CakePHP, ZendFramework, wordpress, grunt, sublime text, netbeans, v.v. ...) và nó sẽ tạo tệp bỏ qua git cho bạn. Nếu bạn không biết cách sử dụng gitignore, tôi nghĩ rằng cách tốt nhất để học nó là xem một số ví dụ về trường hợp sử dụng tốt (như ví dụ được tạo bởi gitignore.io. Nếu bạn muốn sử dụng nó từ dòng cmd (một cách thú vị ) xem Hướng dẫn này: vimeo.com/70609819
DevWL

Câu trả lời:


162

Vì vậy, dựa trên những gì bạn đã nói, những tệp này là thư viện / tài liệu bạn không muốn xóa nhưng cũng không muốn đẩy đến github. Hãy nói rằng bạn có dự án của bạn trong thư mục your_projectvà thư mục doc: your_project/doc.

  1. Xóa nó khỏi thư mục dự án (mà không thực sự xóa nó): git rm --cached doc/*
  2. Nếu bạn chưa có .gitignore, bạn có thể làm cho một bên phải của thư mục dự án của bạn: project/.gitignore.
  3. Đặt doc/*trong .gitignore
  4. Giai đoạn tệp để cam kết: git add project/.gitignore
  5. Cam kết: git commit -m "message".
  6. Đẩy thay đổi của bạn đến github.

bạn có thể vui lòng cho tôi biết làm thế nào để viết tệp .gitignore. tức là, cách viết đường dẫn của các thư mục và tệp mà tôi muốn bỏ qua bên trong tệp .gitignore. Cảm ơn
dùng1559230

Cảm ơn câu trả lời của bạn. Trước khi commit, tôi phải chạy git add -A
user1559230

4
Xin chào, gitignore chỉ là một tệp văn bản thuần túy. Nó thực sự là .gitignore (DOTgitignore). Chỉ cần đặt tên của tệp / loại tệp bạn muốn git bỏ qua, một tên trên mỗi dòng. Ví dụ: sujee.net/tech/articles/gitignore
u19964


42

Nếu bạn không có tệp .gitignore, trước tiên hãy sử dụng:

touch .gitignore

thì lệnh này để thêm các dòng trong tệp gitignore của bạn:

echo 'application/cache' >> .gitignore

Hãy cẩn thận về các dòng mới


Không cần phải touchtập tin trước. >>đồng nghĩa với >nếu tệp chưa tồn tại. echothêm một dòng mới ở cuối đầu ra. Bạn có thể dừng điều đó với -n. Nếu bạn cần bỏ qua của khác nhau, hoặc làm echos khác nhau, hoặc sử dụng -e, như sau: echo -e "**/cache/\n**.pyc" >> .gitignore. Dấu hoa thị kép cũng khớp với tất cả các tệp đào sâu vào các thư mục một cách đệ quy. Sử dụng /ở cuối thư mục, đề phòng.
mazunki

1
@Andrew tl; dr: Thêm từng tệp bị bỏ qua với echo "file_to_be_ignored" >> .gitignore, không cần làm gì khác. End tên thư mục với /như echo "**/modules/" >> .gitignore.
mazunki

Tại sao nhận xét của tôi bị xóa
Andrew

12

git ignore là một quy ước trong git. Đặt một tệp theo tên của .gitignore sẽ bỏ qua các tệp trong thư mục đó và các thư mục sâu hơn phù hợp với các mẫu mà tệp chứa. Cách sử dụng phổ biến nhất là chỉ có một tệp như thế này ở cấp cao nhất. Nhưng bạn có thể thêm những người khác sâu hơn vào cấu trúc thư mục của mình để bỏ qua nhiều mẫu hơn nữa hoặc ngừng bỏ qua chúng cho thư mục đó và sau đó là những mẫu sâu hơn.

Tương tự như vậy, bạn có thể "hủy bỏ qua" các tệp nhất định trong cấu trúc sâu hơn hoặc một tập con cụ thể (tức là bạn bỏ qua * .log nhưng vẫn muốn theo dõi important.log) bằng cách chỉ định các mẫu bắt đầu bằng !. ví dụ:

*.log !important.log

sẽ bỏ qua tất cả các tệp nhật ký nhưng sẽ theo dõi các tệp có tên important.log

Nếu bạn đang theo dõi các tệp bạn muốn bỏ qua, hãy xóa chúng, thêm mẫu vào tệp .gitignore của bạn và thêm tất cả các thay đổi

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

từ bây giờ kho lưu trữ của bạn sẽ không có chúng theo dõi.

Nếu bạn muốn xóa lịch sử của mình, bạn có thể

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

sau đó đánh dấu từng cam kết bằng ehoặc edit. Lưu kế hoạch. Bây giờ git sẽ phát lại lịch sử của bạn dừng lại ở mỗi lần cam kết mà bạn đã đánh dấu bằng e. Tại đây bạn xóa các tệp bạn không muốn git add -Avà sau đó git rebase --continuecho đến khi bạn hoàn tất. Lịch sử của bạn sẽ sạch sẽ. Đảm bảo rằng bạn đã nói với đồng nghiệp vì bạn sẽ phải thúc đẩy và họ sẽ phải căn cứ lại những gì họ chưa thúc đẩy.


8

Có một tệp trong thư mục gốc git của bạn có tên .gitignore. Đó là một tệp, không phải lệnh. Bạn chỉ cần chèn tên của các tệp mà bạn muốn bỏ qua và chúng sẽ tự động bị bỏ qua. Ví dụ: nếu bạn muốn bỏ qua tất cả các tệp tự động lưu emacs kết thúc bằng ~, thì bạn có thể thêm dòng này:

*~

Nếu bạn muốn xóa các tệp không mong muốn khỏi nhánh của mình, bạn có thể sử dụng git add -A" loại bỏ các tệp không còn trong cây làm việc ".

Lưu ý: Cái tôi gọi là "thư mục gốc git" chỉ đơn giản là thư mục mà bạn sử dụng git initlần đầu tiên. Nó cũng là nơi bạn có thể tìm thấy .gitthư mục.


những gì sẽ xảy ra với các tập tin đã bị đẩy mà tôi không muốn
user1559230

4

Nếu bạn không có tệp .gitignore. Bạn có thể tạo một cái mới bằng cách

touch .gitignore

Và bạn có thể loại trừ một thư mục bằng cách nhập lệnh dưới đây vào tệp .gitignore

/folderName

đẩy tệp này vào kho lưu trữ git của bạn để khi một người mới sao chép dự án của bạn, anh ta không phải thêm lại tệp đó


2

Có một số cách để sử dụng gitignore git

  • xác định bằng tên tệp cụ thể. ví dụ: để bỏ qua một tệp có
    tên readme.txt, chỉ cần ghi readme.txt trong tệp .gitignore.
  • bạn cũng có thể viết tên của phần mở rộng tệp. Ví dụ: để
    bỏ qua tất cả các tệp .txt, hãy viết * .txt.
  • bạn cũng có thể bỏ qua toàn bộ thư mục. ví dụ bạn muốn bỏ qua
    thư mục có tên kiểm tra. Sau đó, chỉ cần viết thử nghiệm / trong tệp.

chỉ cần tạo một tệp .gitignore và viết bất kỳ thứ gì bạn muốn để bỏ qua một tệp gitignore mẫu sẽ là:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

Bạn có thể tìm thêm trên git tài liệu gitignore


1

trên máy mac của tôi, tôi đã tìm thấy tệp này .gitignore_global .. nó nằm trong thư mục chính của tôi bị ẩn vì vậy hãy làm một ls -altrđể xem nó.

Tôi đã thêm các tệp nhật thực mà tôi muốn git bỏ qua. nội dung trông như thế này:

 *~
.DS_Store
.project
.settings
.classpath
.metadata

khi tôi đặt tệp .gitignore trong thư mục dự án của mình, nó đã làm xáo trộn cục bộ dự án nhật thực của tôi. bạn có biết tại sao điều đó có thể xảy ra và làm thế nào để ngăn chặn nó ?? bây giờ tôi chỉ tránh xa .gitignore.
JesseBoyd

Tôi không sử dụng nhật thực nữa. Inteilji nay
j2emanue
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.