2011-01-03 41 views
8

Tôi đã làm việc trên chi nhánh tính năng địa phương của mình, foo. Sau đó, tôi muốn đẩy nhánh mới đó ra để những người khác có thể làm việc với nó. Cách thông thường để thực hiện việc này là:Kết quả của `git push origin` là gì?

git push origin foo:foo 

Tôi đã làm và hoàn thành như mong đợi, đẩy lên 61 đối tượng. Trước khi làm điều đó, trên một ý thích, tôi đã thử:

git push origin 

Suy nghĩ có thể nó sẽ mặc định làm nhánh mới từ xa dựa trên tên chi nhánh địa phương của tôi. Đầu ra là đầu ra đẩy bình thường, chỉ có 13 vật được đẩy lên. Kết quả là không thể tưởng tượng được. Không có gì mới hiển thị cho các nhà phát triển khác hoặc trong repo địa phương của tôi sau khi tìm nạp.

Vì vậy, những gì git nghĩ rằng tôi đang nói nó làm khi tôi làm git push origin, và những gì có hiệu lực, nếu có, nó đã có trên repo từ xa của tôi?

+3

'git giúp đỡ push' nên cung cấp cho bạn tất cả các thông tin mà bạn muốn biết. Có một phần về 'git push origin' làm gì và tùy chọn cấu hình nào ảnh hưởng đến những gì nó làm. http://www.kernel.org/pub/software/scm/git/docs/git-push.html –

Trả lời

11

Tùy thuộc vào phiên bản git của bạn. Trong phiên bản cũ, nó sẽ cố gắng đẩy mỗi nhánh địa phương cũng có mặt ở phía xa. Kể từ phiên bản 1.6.3, hành vi được kiểm soát bởi tùy chọn cấu hình push.default.

Giá trị là:

  • matching: [mặc định] đẩy tất cả chi nhánh với cùng một tên địa phương và xa
  • nothing: đẩy gì
  • tracking: sẽ chỉ đẩy chi nhánh hiện tại nếu nó đang theo dõi một chi nhánh ở xa
  • current: sẽ đẩy chi nhánh hiện tại
+2

Và tôi sẽ thêm vào đó: 'kết hợp' là mặc định mặc định –

+0

Cập nhật câu trả lời với điều đó để dễ đọc cho người khác –

3

tháng 6 năm 2012: [ANNOUNCE] Git 1.7.11.rc1

Một chế độ mới cho push, "simple", mà là một chéo giữa "current" và "upstream", đã được giới thiệu.
"git push" không có bất kỳ refspec nào sẽ đẩy chi nhánh hiện tại ra cùng tên tại kho lưu trữ từ xa chỉ khi nó được đặt để theo dõi chi nhánh có cùng tên trên đó.
Kế hoạch là đặt chế độ này làm giá trị mặc định mới khi push.default không được định cấu hình.


tháng 3 năm 2012: Hãy coi chừng: đó là mặc định "phù hợp với" chính sách có thể thay đổi sớm
(đôi khi sau Git1.7.10 +)
:

Xem "Please discuss: what "git push" should do when you do not say what to push?"

Trong cài đặt hiện tại (ví dụ:push.default=matching), git push không có đối số sẽ đẩy tất cả các nhánh tồn tại cục bộ và từ xa có cùng tên.
Điều này thường thích hợp khi nhà phát triển đẩy vào kho lưu trữ công cộng của riêng mình, nhưng có thể gây nhầm lẫn nếu không nguy hiểm khi sử dụng kho lưu trữ được chia sẻ.

Đề xuất là thay đổi mặc định thành 'upstream', tức là chỉ đẩy chi nhánh hiện tại và đẩy nhánh đó vào nhánh git kéo sẽ kéo.
Một ứng cử viên khác là 'current'; điều này chỉ đẩy nhánh hiện tại đến nhánh từ xa cùng tên.

gì đã được thảo luận cho đến nay có thể được nhìn thấy trong luồng này:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

trước các cuộc thảo luận liên quan bao gồm:

Để tham gia thảo luận, gửi tin nhắn đến: [email protected]

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