Bỏ qua Git toàn cầu


841

Tôi muốn thiết lập Git để bỏ qua các tệp nhất định trên toàn cầu.

Tôi đã thêm một .gitignoretập tin vào thư mục chính của tôi ( /Users/me/) và tôi đã thêm dòng sau vào nó:

*.tmproj

Nhưng nó không bỏ qua loại tập tin này, bất kỳ ý tưởng những gì tôi đang làm sai?


7
Bạn cũng có thể muốn xem các đề xuất bỏ qua của GitHub - help.github.com/articles/ignoring-files ; họ có một kho lưu trữ các mẫu bỏ qua phổ biến
drzaus

6
Bạn cũng có thể muốn xem xét chỉ sử dụng một .gitignore bên trong các dự án riêng lẻ. Mặt khác, nếu bạn (hoặc ai đó) sao chép dự án trên một hệ thống mới, bạn cũng sẽ phải tạo lại cấu hình và cấu hình loại trừ toàn cầu mỗi lần.
Stan Kurdziel

25
Các tệp có thể bỏ qua mà dự án tạo phải nằm trong tệp .gitignore của dự án, các tệp không thể biết mà nội dung trên máy của bạn tạo sẽ xuất hiện trong .gitignore toàn cầu (như tệp tạm thời của trình soạn thảo / IDE và tương tự).
Pylinux

2
Các thư mục môi trường ảo Python là trường hợp sử dụng phổ biến cho các mục trong loại trừ toàn cục hoặc cục bộ của tôi.
Hầm

10
@Pylinux Trên thực tế, mỗi git-scm , IDE cá nhân và các công cụ cụ thể của quy trình công việc có thể đi vào tệp không bị theo dõi .git/info/excludetrong repo, do đó không nhất thiết phải đi vào tệp toàn cầu. Ngoài ra, tập tin gitignore toàn cầu mặc định và tự động là $HOME/.config/git/ignore.
Acumenus

Câu trả lời:


1422

Bạn cần thiết lập core.excludesfiletệp cấu hình toàn cầu của mình để trỏ đến tệp bỏ qua toàn cầu này.

ví dụ

* nix hoặc Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Đối với Windows, nó được đặt ở vị trí C:\Users\{myusername}\.gitignore. Bạn có thể xác minh rằng giá trị cấu hình là chính xác bằng cách thực hiện:

git config --global core.excludesfile

Kết quả phải là đường dẫn mở rộng đến hồ sơ người dùng của bạn .gitignore. Đảm bảo rằng giá trị không chứa %USERPROFILE%chuỗi chưa được mở rộng.

Quan trọng : Các lệnh trên sẽ chỉ đặt vị trí của tệp bỏ qua mà git sẽ sử dụng. Tệp vẫn phải được tạo thủ công ở vị trí đó và được điền vào danh sách bỏ qua. (từ bình luận của muruge )

Bạn có thể đọc về lệnh tại https://help.github.com/articles/ignoring-files/#create-a-global-gitignore


2
Miễn là nó không nằm trong HEADchỉ mục của bạn hoặc của bạn, nó sẽ không tạo ra bất kỳ sự khác biệt nào cho dù tệp đã được theo dõi hay chưa. Nó có thể hữu ích nếu bạn thêm đầu ra của git status, git config core.excludesfilecâu hỏi của bạn.
CB Bailey

2
Tôi có thể sử dụng #ở đầu dòng bên trong ~/.gitignoređể thêm nhận xét bên trong tệp bỏ qua toàn cầu không?
Dror

9
Các phiên bản gần đây của bộ công cụ Git Windows chính thức sử dụng cú pháp * nix thay thế; nếu dòng này không hoạt động, thay vào đó hãy thử * nix.
Andy Jones

9
Tôi đã không thể làm điều này để làm việc bằng cách sử dụng %USERPROFILE%biến. Tôi đã phải nhập đường dẫn đầy đủ đến tệp bằng cách sử dụng dấu tách thư mục * nix. ví dụ: core.excludesfile C: /Users/User/.gitignore
Vince

21
Không thể làm cho nó hoạt động với biến% USERPROFILE%. Tôi đã phải sử dụng git config --global core.excludesfile '~ / .gitignore' trong windows để đặt nó ở vị trí C: / users / {myusername} /. Gitignore. Ngoài ra lệnh trên sẽ chỉ đặt vị trí của tệp bỏ qua mà git sẽ sử dụng. Tệp vẫn phải được tạo thủ công ở vị trí đó và được điền vào danh sách bỏ qua.
muruge

301

Trước khi cấu hình lại tệp loại trừ toàn cầu, bạn có thể muốn kiểm tra xem hiện tại nó được cấu hình để sử dụng lệnh này:

git config --get core.excludesfile

Trong trường hợp của tôi, khi tôi chạy nó, tôi thấy tệp loại trừ toàn cầu của tôi được định cấu hình để

~ / .gitignore_global
và đã có một vài điều được liệt kê ở đó. Vì vậy, trong trường hợp của câu hỏi đã cho, trước tiên có thể kiểm tra một tệp loại trừ hiện có và thêm mặt nạ tệp mới vào đó.


2
công việc này thật tuyệt Thiết lập tập tin gitignore toàn cầu của bạn như bình thường; một mục nhập trên mỗi dòng.
Maarten Hartman

237

Mặc dù các câu trả lời khác là chính xác nhưng chúng đang đặt giá trị cấu hình chung trong khi có một vị trí git mặc định cho tệp bỏ qua git toàn cầu:

* nix:

~/.config/git/ignore

Các cửa sổ:

%USERPROFILE%\git\ignore

Bạn có thể cần tạo gitthư mục và ignoretệp nhưng sau đó bạn có thể bỏ qua toàn cầu của mình vào tệp đó và đó là nó!

Nguồn

Tập tin nào để đặt một mẫu trong tùy thuộc vào cách sử dụng mẫu đó.

Giáo dục

  • Các mẫu mà người dùng muốn Git bỏ qua trong mọi tình huống (ví dụ: các tệp sao lưu hoặc tạm thời do trình soạn thảo lựa chọn của người dùng tạo) thường đi vào một tệp được chỉ định bởi core.excludesFilengười dùng ~/.gitconfig. Giá trị mặc định của nó là $ XDG_CONFIG_HOME / git / bỏ qua. Nếu $ XDG_CONFIG_HOME không được đặt hoặc trống, $ HOME / .config / git / bỏ qua được sử dụng thay thế.

1
Điều đó thật tuyệt; Tôi không biết về điều này ... tuy nhiên đây không phải là một tập tin được tạo ra? Nó có thể được ghi đè khi bạn cập nhật / cài đặt lại không?
danielsdesk

1
Tôi tin rằng tập tin được tạo / sửa đổi bằng cách chạy một số gitlệnh nhất định . Vì nó là một tệp cài đặt trong mỗi thư mục của người dùng, tôi không nghĩ rằng nó sẽ bị ghi đè.
Steve Jorgensen

1
Tôi đồng ý này nên là câu trả lời được chấp nhận, tuy nhiên tôi không tìm thấy trong tài liệu hướng dẫn -Các một trợ giúp bài viết này ( help.github.com/articles/ignoring-files )
AVProgrammer

1
@AVProgrammer Tôi vừa chỉnh sửa câu trả lời để phản ánh sự thay đổi trong cách tổ chức tài liệu nguồn.
Steve Jorgensen

7
Hình như trên Windows thì đường dẫn cũng vậy ~/.config/git/ignore.
suriv

40

Để tạo gitignore toàn cầu từ đầu:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. Dòng đầu tiên thay đổi thư mục thành C:/Users/User
  2. Sau đó, bạn tạo một tập tin trống với .gitignore_globalphần mở rộng
  3. Và cuối cùng thiết lập bỏ qua toàn cầu cho tập tin đó.
  4. Sau đó, bạn nên mở nó bằng một số loại notepad và thêm các quy tắc bỏ qua cần thiết.

18

Từ đây .

Nếu bạn tạo một tệp trong repo của mình có tên .gitignore git sẽ sử dụng quy tắc của nó khi xem tệp để cam kết. Lưu ý rằng git sẽ không bỏ qua một tệp đã được theo dõi trước khi một quy tắc được thêm vào tệp này để bỏ qua nó. Trong trường hợp như vậy, tệp phải không được theo dõi, thường là:

git rm --cached filename

Có phải trường hợp của bạn?


Tôi đang cố gắng phớt lờ toàn cầu, điều đó không xảy ra !!
Fuzz nhẹ

@MildFuzz trên Linux core.excludesfiletệp dường như được hiểu khác với .gitignoretệp. Nếu bạn muốn bỏ qua toàn bộ một thư mục, chỉ cần đặt tên của thư mục như .vscode/thay vì.vscode/*
Aspires Dev

11

Nếu bạn sử dụng hệ thống Unix, bạn có thể giải quyết vấn đề của mình bằng hai lệnh. Trong đó lần đầu tiên khởi tạo cấu hình và tệp thứ hai thay đổi với một tệp để bỏ qua.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore

10
  1. Tạo một tập tin .gitignore trong thư mục nhà của bạn
touch ~/.gitignore
  1. Thêm tệp vào nó ( thư mục không được công nhận )

Thí dụ

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Kiểm tra xem một git đã có một gitignore toàn cầu
git config --get core.excludesfile
  1. Nói cho git biết tập tin ở đâu
git config --global core.excludesfile '~/.gitignore'

Voila !!


"Các thư mục không được nhận dạng" - Điều đó thật sai lầm, các thư mục đang hoạt động tốt ...
TobiX

7

Hãy nhớ rằng chạy lệnh

git config --global core.excludesfile '~/.gitignore'

sẽ chỉ thiết lập tệp toàn cầu, nhưng sẽ KHÔNG tạo nó. Đối với Windows, hãy kiểm tra thư mục Người dùng của bạn để tìm .gitconfigtệp và chỉnh sửa tệp theo sở thích của bạn. Trong trường hợp của tôi Nó là như thế:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore

3

Tôi có thể bỏ qua một .tmprojtập tin bằng cách bao gồm .tmprojhoặc *.tmprojtrong /users/me/.gitignore-globaltập tin của tôi .

Lưu ý rằng tên tập tin là .gitignore-globalkhông .gitignore. Nó không hoạt động bằng cách bao gồm .tmprojhoặc *.tmprojtrong một tệp được gọi .gitignoretrong /users/methư mục.


4
Không có vấn đề gì bạn gọi tập tin bỏ qua toàn cầu của bạn miễn là nó phù hợp với core.excludesfilecấu hình của bạn .
CB Bailey

Ah! Điểm tốt @CharlesBailey. Tuy nhiên đây có thể là điều mà người viết có thể muốn kiểm tra. Lý do .tmprojtập tin không bị bỏ qua có thể là do người dùng excludesfilekhông có .gitignore.
Sri Sankaran

Tôi đoán anh ấy nghĩ rằng người dùng sẽ đủ thông minh để nhận ra.
CÔNG TRÌNH 22/03 '

2

Bạn nên tạo một tệp loại trừ cho việc này. Kiểm tra ý chính này là khá tự giải thích.

Để giải quyết câu hỏi của bạn, mặc dù bạn có thể cần hoặc de-index các .tmprojtập tin (nếu bạn đã thêm nó vào index) với git rm --cached path/to/.tmproj, hay git addcommitbạn .gitignoretập tin.


Tôi đang cố gắng thực hiện việc này trên toàn cầu, không chỉ trên mỗi repo
Mild Fuzz

Vâng, đó là những gì tôi liên kết đến trong ý chính. Tôi hơi bối rối bởi câu hỏi ban đầu. Bạn đã làm git rm --cachedchưa?
Nic

Vâng, đã thử nó. Dường như với tôi, tôi đã làm theo tất cả các lời khuyên được đề nghị! Tôi đang thiếu gì?
Fuzz nhẹ

Theo đề xuất, tôi sẽ thêm trạng thái git của bạn và loại trừ thông tin cho câu hỏi :)
Nic

2

trên hệ thống con windows cho linux Tôi đã phải điều hướng đến root hệ thống con cd ~/sau đó touch .gitignorevà sau đó cập nhật cấu hình gitignore toàn cầu trong đó.

Tôi hi vọng nó giúp ích cho ai đó.


0

Nếu bạn đang sử dụng VSCODE, bạn có thể nhận tiện ích mở rộng này để xử lý công việc cho bạn. Nó theo dõi không gian làm việc của bạn mỗi khi bạn lưu công việc của mình và giúp bạn tự động bỏ qua các tệp và thư mục bạn đã chỉ định trong vscode settings.json bỏ qua (phần mở rộng vscode)

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.