Cảnh báo: push.default không được đặt; giá trị ngầm định của nó đang thay đổi trong Git 2.0


1623

Tôi đã sử dụng Git được một thời gian và gần đây đã tải xuống một bản cập nhật chỉ để thấy thông báo cảnh báo này xuất hiện khi tôi cố gắng push.

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Tôi rõ ràng có thể đặt nó thành một trong những giá trị được đề cập, nhưng chúng có ý nghĩa gì? Sự khác biệt giữa simplevà là matchinggì?

Nếu tôi thay đổi nó trên một khách hàng, tôi có cần phải làm gì với các khách hàng khác mà tôi chia sẻ repos không?




1
Lưu ý: git 2.8 (tháng 3 năm 2016) sẽ xóa cảnh báo đó! Xem stackoverflow.com/a/22356644/6309
VonC

Câu trả lời:


2148

Nó được giải thích rất chi tiết trong các tài liệu , nhưng tôi sẽ cố gắng tóm tắt:

  • matchingcó nghĩa là git pushsẽ đẩy tất cả các chi nhánh địa phương của bạn đến những chi nhánh có cùng tên trên điều khiển từ xa. Điều này giúp dễ dàng vô tình đẩy một nhánh mà bạn không có ý định.

  • simplecó nghĩa là git pushsẽ chỉ đẩy nhánh hiện tại đến nhánh git pullsẽ kéo ra và cũng kiểm tra xem tên của chúng có khớp không. Đây là một hành vi trực quan hơn, đó là lý do tại sao mặc định đang được thay đổi thành này.

Cài đặt này chỉ ảnh hưởng đến hành vi của máy khách cục bộ của bạn và có thể được ghi đè bằng cách chỉ định rõ ràng nhánh nào bạn muốn đẩy trên dòng lệnh. Các máy khách khác có thể có các cài đặt khác nhau, nó chỉ ảnh hưởng đến những gì xảy ra khi bạn không chỉ định nhánh nào bạn muốn đẩy .


16
Vui mừng khi biết sự thay đổi này. Khi tôi mới sử dụng git, tôi vô tình đẩy tất cả các chi nhánh địa phương với suy nghĩ git pushsẽ chỉ đẩy chi nhánh hiện tại.
rahul286

51
Động cơ là, theo kinh nghiệm, hầu hết đều mong đợi hành vi mặc định mới
Blake Miller

125
Sẽ tốt hơn nhiều nếu có bản tóm tắt tuyệt vời rõ ràng của bạn trong chính thông điệp cảnh báo, thay vì hướng dẫn yêu cầu chúng tôi mở tài liệu và tìm kiếm một chuỗi.
hertzsprung

116
"Nó được giải thích rất rõ ràng trong các tài liệu" Chắc chắn là nếu bạn kết thúc ở đúng trang, tuy nhiên hướng dẫn sử dụng git đẩy thậm chí không đề cập đến từ đơn giản , có lẽ là rất nhiều người đã kết thúc ở đây .
Gerry

36
Tóm tắt của hammar là một lời giải thích ngắn gọn hơn nhiều so với các tài liệu git.
AJ.

19

Tôi nhận ra đây là một bài viết cũ nhưng khi tôi gặp vấn đề tương tự và gặp khó khăn khi tìm câu trả lời, tôi nghĩ tôi sẽ thêm một chút.

Vì vậy, câu trả lời của @ hammar là chính xác. Theo push.default simplecách nào đó, việc sử dụng là định cấu hình theo dõi trên các nhánh của bạn để bạn không cần chỉ định điều khiển từ xa và các nhánh khi đẩy và kéo. Các matchingtùy chọn sẽ đẩy tất cả các chi nhánh với các đối tác tương ứng của họ về mặc định từ xa (đó là một trong những đầu tiên được thành lập, trừ khi bạn đã cấu hình repo của bạn khác).

Một điều tôi hy vọng những người khác thấy hữu ích trong tương lai là tôi đã chạy Git 1.8 trên OS X Mountain Lion và không bao giờ thấy lỗi này. Nâng cấp lên Mavericks là điều bất ngờ khiến nó xuất hiện (đang chạy git --versionsẽ hiển thị git version 1.8.3.4 (Apple Git-47)những gì tôi chưa từng thấy cho đến khi cập nhật lên HĐH.


2
Tôi cũng bắt đầu thấy điều này sau khi nâng cấp lên Mavericks. Vì vậy, tôi đoán Git đã được nâng cấp cùng lúc với Mavericks, giống như bạn đang ám chỉ.
Per Lundberg

8

Nếu bạn nhận được một tin nhắn từ git phàn nàn về giá trị simpletrong cấu hình, hãy kiểm tra của bạn git version.

Sau khi nâng cấp XCode( Macđang chạy Mountain Lion), cũng được nâng cấp gittừ 1.7.4.4 lên 1.8.3.4 , các shell bắt đầu trước khi nâng cấp vẫn chạy git 1.7.4.4 và phàn nàn về giá trị simplecho Push.default trong cấu hình toàn cầu.

Giải pháp là đóng các shell chạy phiên bản cũ gitvà sử dụng phiên bản mới!


13
Tôi đang sử dụng bản cài đặt Xcode mới (git là phiên bản 1.8.5.2) và tôi vẫn gặp lỗi này cho đến khi tôi chạy:git config --global push.default simple
Sam-Graham

2

Tôi đã tự hỏi tại sao tôi lại nhận được thông báo cảnh báo lớn đó trên Ubuntu 16.04 (đi kèm với Git 2.7.4), nhưng không phải trên Arch Linux. Lý do là cảnh báo đã bị xóa trong Git 2.8 (tháng 3 năm 2016):

Xuyên suốt quá trình chuyển đổi xung quanh phiên bản Git 2.0, người dùng đã nhận được cảnh báo khá lớn khi chạy "git đẩy" mà không cài đặt biến cấu hình Push.default. Chúng tôi không còn cảnh báo vì quá trình chuyển đổi đã hoàn thành từ lâu.

Vì vậy, bạn sẽ không thấy cảnh báo nếu bạn có Git 2.8 trở lên và không cần đặt push.defaulttrừ khi bạn muốn thay đổi 'simple'hành vi mặc định .

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.