2015-09-16 12 views
7

Tôi muốn thông báo cho git để bỏ qua tệp có tên foo.ext nếu và chỉ khi có một tệp khác có tên foo.txe. Tôi gần như chắc chắn rằng điều này không thể được thực hiện với cú pháp .gitignore nhưng có thể có những cách khôn lanh khác mà tôi không nghĩ đến?Làm cách nào để yêu cầu git bỏ qua một tệp nhất định nếu và chỉ khi một tệp khác tồn tại?

Ví dụ về sử dụng: Tôi thường lưu trữ các số liệu của tài liệu LaTeX trong thư mục con có tên figures. Và tôi thường thiết kế số liệu của mình với Xfig. makefile tôi gọi fig2dev để tạo ra một cặp tập tin từ figures/foo.fig nguồn:

  • figures/foo.pdf, một tập tin PDF cho phần đồ họa,
  • figures/foo.pdf_t, một file LaTeX cho các văn bản, với một lệnh includegraphics để bao gồm các PDF.

Vì hai tệp này được tạo nên tôi muốn git để bỏ qua chúng. Tôi có thể thêm hai mẫu loại trừ đơn giản vào tệp .gitignore của mình nhưng cũng xảy ra rằng một số số liệu của tôi ở dạng PDF thuần túy, không được tạo từ một nguồn khác. Và tất nhiên, tôi muốn git không bỏ qua các tệp figures/bar.pdf này.

Tôi muốn thêm một cái gì đó như:

/\(**\)/figures/\(*\).fig: /\1/figures/\2.pdf /\1/figures/\2.pdf_t 

đến file .gitignore của tôi, có nghĩa là bất kỳ tập tin có tên /<some_path>/figures/<some_name>.pdf hoặc /<some_path>/figures/<some_name>.pdf_t được bỏ qua nếu và chỉ nếu một file có tên /<some_path>/figures/<some_name>.fig tồn tại với cùng <some_path><some_name>.

+0

có thể trùng lặp của [Gitignore một tập tin nếu tập tin với phần mở rộng khác nhau tồn tại] (http://stackoverflow.com/questions/28325195/gitignore-a-file-if-file-with-different-extension-exists) –

Trả lời

2

Bạn sẽ cần phải sử dụng thứ gì đó trong tên tệp hoặc thư mục để xác định tệp nào được tạo tự động và tệp nào không được tạo. Tùy thuộc vào cách thiết lập mã của bạn, bạn có thể bỏ qua dựa trên một thư mục. Ví dụ: sử dụng figure-auto cho tệp được tạo tự động và figure cho các tệp được tạo theo cách thủ công.

figure-auto/

Nếu bạn chỉ có một vài tập tin mà bạn không muốn bỏ qua bạn có thể sử dụng

figures/*.pdf 
figures/*.pdf_t 
!figures/keep-in-source-control.pdf 
!figures/manually-created.pdf 

Git Ignore Pattern Format

+0

Tôi biết cách sử dụng '.gitignore' và đây không phải là những gì tôi đã tìm kiếm, nhưng cảm ơn, tôi đánh giá cao y sự giúp đỡ của chúng tôi. –

Các vấn đề liên quan