Có một lệnh bỏ qua cho git như có cho svn?


125

Tôi là người dùng mới gitvà tôi đang bắt đầu một dự án mới. Tôi có một loạt các tập tin dấu chấm mà tôi muốn bỏ qua. Có một lệnh bỏ qua cho gitnhư là có cho svn?


1
Thay thế tốt cho gitignore: git update-index --assume-không thay đổi <file> , nhờ stackoverflow.com/a/16442091/2162226
Gene Bo

Câu trả lời:


136

Không có git ignorelệnh đặc biệt .

Chỉnh sửa một .gitignoretập tin nằm ở vị trí thích hợp trong bản sao làm việc. Sau đó bạn nên thêm nó .gitignorevà cam kết nó. Tất cả những người nhân bản repo sẽ bỏ qua những tập tin đó.

Lưu ý rằng chỉ các tên tệp bắt đầu bằng /sẽ liên quan đến thư mục .gitignorenằm trong. Mọi thứ khác sẽ khớp với các tệp trong bất kỳ thư mục con nào.

Bạn cũng có thể chỉnh sửa .git/info/excludeđể bỏ qua các tệp cụ thể chỉ trong một bản sao đang hoạt động. Các .git/info/excludetập tin sẽ không được cam kết, và do đó sẽ chỉ áp dụng cục bộ trong một bản sao làm việc này.

Bạn cũng có thể thiết lập một tệp toàn cầu với các mẫu để bỏ qua git config --global core.excludesfile. Điều này sẽ áp dụng cục bộ cho tất cả các bản sao làm việc trên cùng một tài khoản của người dùng.

Chạy git help gitignorevà đọc văn bản để biết chi tiết.


75
Không có một lệnh bỏ qua đơn giản có vẻ như một sự giám sát như vậy đối với một phần của đội git.
jcollum

4
@jcollum Thoạt nhìn thì có, nhưng việc đơn giản hóa một lệnh để thêm lệnh mới VÀ sự phức tạp của việc tạo một lệnh và xử lý tất cả các trường hợp cạnh / gotchas / các vấn đề tiềm năng của việc chỉnh sửa tệp văn bản cũng có ý nghĩa để đưa nó vào người sử dụng. Tôi cảm thấy mâu thuẫn vì cả hai đồng ý và không đồng ý với bạn.
abelito

100

Một lệnh bỏ qua git rất hữu ích đi kèm với tj / git-bổ sung tuyệt vời .

Dưới đây là một vài ví dụ sử dụng:

Liệt kê tất cả các mẫu hiện đang bị bỏ qua

git ignore

Thêm một mẫu

git ignore "*.log"

Thêm một trong các mẫu từ gitignore.io

git ignore-io -a rails

git-bổ sung cung cấp nhiều lệnh hữu ích hơn. Chắc chắn đáng để thử.


1
Vì vậy, nếu tôi sử dụng git bỏ qua "index.html" thì nó sẽ bỏ qua tập tin này?
JohnAndrews

Lệnh -t vẫn được áp dụng chứ? Khi tôi chạy nó, nó chỉ thêm -t và bất kỳ mẫu nào tôi cố gắng thêm vào tệp bỏ qua git
Bynho

50

Trên Linux / Unix, bạn có thể nối các tệp vào tệp .gitignore bằng echolệnh. Ví dụ: nếu bạn muốn bỏ qua tất cả các .svnthư mục, hãy chạy nó từ thư mục gốc của dự án:

echo .svn/ >> .gitignore

1
Tôi đã tìm ra tweet này bằng cú pháp twitter.com/noodl_io/status/669904872704253953
JohnAndrews

3
Trong Git Bash trên Windows, tôi cần thêm một /dấu trước và dấu '\' (để tạo một dòng mới), chẳng hạn như echo /nbproject/project.properties\ >> .gitignoreecho /nbproject/project.xml\ >> .gitignore.
Ryan

15

Bạn có hai cách bỏ qua các tệp:

  • .gitignoretrong bất kỳ thư mục nào sẽ bỏ qua các tệp như được chỉ định trong tệp cho thư mục đó. Sử dụng ký tự đại diện là có thể.
  • .git/info/excludegiữ mẫu bỏ qua toàn cục, tương tự như global-ignorestệp cấu hình lật đổ.

6
Lưu ý rằng các mẫu trong .gitignoretệp không chứa '/' được khớp đệ quy (nghĩa là trong tất cả các thư mục con của thư mục .gitignoretệp nằm trong), trái với trường hợp svn:ignorethuộc tính thư mục trong Subversion.
Jakub Narębski

6

Tôi hy vọng nó không quá muộn.

Nếu bạn đang ở trên Windows, bạn chỉ cần làm như sau để tạo tệp .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Để chỉnh sửa .gitignore, bạn có thể chạy

notepad .gitignore

2
Đừng sử dụng nếu bạn đã có tệp .gitignore, nó sẽ ghi đè lên nó! Để nối thêm tệp để bỏ qua, hãy sử dụng tệp này: echo ign.ext >> .gitignore
TomEberhard

Bạn đã đúng, chỉ nên sử dụng nếu tệp .gitignore không tồn tại. Tốt hơn là sử dụng "notepad .gitignore", nếu bạn có tệp .gitignore, nó sẽ mở nó và nếu bạn không tạo nó, và sau đó bạn có thể thêm tất cả các tệp từ notepad. 1 tệp / thư mục trên mỗi dòng
Nesar

3

Tạo một tệp có tên .gitignore trên thư mục gốc của kho lưu trữ của bạn. Trong tệp này, bạn đặt đường dẫn tương đối cho mỗi tệp bạn muốn bỏ qua trong một dòng. Bạn có thể sử dụng *ký tự đại diện.


2

Sử dụng các câu trả lời đã được cung cấp, bạn có thể cuộn git ignorelệnh của riêng mình bằng bí danh . Thêm tệp này vào tệp ~ / .gitconfig của bạn:

ignore = !sh -c 'echo $1 >> .gitignore' -

Hoặc chạy lệnh này từ trình bao (* nix) bạn chọn:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Bạn cũng có thể tạo một git excludelệnh bằng cách thay thế ignorebằng exclude.gitignorebằng.git/info/exclude ở trên.

(Nếu bạn chưa hiểu sự khác biệt giữa hai tệp này khi đọc câu trả lời ở đây, hãy xem câu hỏi này .)


1
Câu trả lời ở đây mở rộng chính xác $ 1: stackoverflow.com/a/21884533/1465227
Archangel33

2

đối với tên không có trong bản sao làm việc hoặc repo:

echo /globpattern >> .gitignore

hoặc cho một tệp hiện có (dòng lệnh sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit

1

Thật hữu ích khi xác định một tệp .gitignore hoàn chỉnh cho dự án của bạn. Phần thưởng là sử dụng an toàn --allhoặc thuận tiện -acho các lệnh như addcommit.

Ngoài ra, hãy xem xét việc xác định tệp toàn cầu ~ / .gitignore cho các mẫu thường bị bỏ qua, chẳng hạn như *~ , bao gồm các tệp tạm thời được tạo bởi Emacs.


1

Bạn phải cài đặt git-bổ sung cho việc này. Bạn có thể cài đặt nó trong Ubuntu bằng apt-get,

$ sudo apt-get install git-extras

Sau đó, bạn có thể sử dụng lệnh bỏ qua git.

$ git ignore file_name

3
Trên Mac, nếu bạn đã cài đặt Homebrew, bạn có thể chạy brew install git-extras.
Alex Glover

0

Bạn cũng có thể sử dụng Joe Blau gitignore.io

Thông qua web can thiệp https://www.gitignore.io/

Hoặc bằng cách cài đặt công cụ CLI, rất dễ dàng, chỉ cần gõ như sau trên thiết bị đầu cuối của bạn:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Và sau đó, bạn có thể chỉ cần nhập gifollowd bởi tất cả các yếu tố nền tảng / môi trường mà bạn cần tiêu chí gitignore cho.

Thí dụ!
Giả sử bạn đang làm việc trên một dự án nút bao gồm grunt và bạn đang sử dụng webstorm trên linux, sau đó bạn có thể muốn nhập:
gi linux,webstorm,node,grunt > .gitignore(để tạo một tệp hoàn toàn mới)
hoặc
gi linux,webstorm,node,grunt >> .gitignore(để thêm / thêm các quy tắc mới vào một tệp hiện có )

bam, bạn tốt để đi

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.