2012-10-23 20 views
51

tôi đã vấn đề xa lạ này, bất cứ khi nào tôi làm git push nó từ chối làm bất cứ điều gì:Git: gây tử vong: Các chi nhánh tổng thể hiện nay có nhiều chi nhánh ở thượng nguồn, từ chối để đẩy

fatal: The current branch master has multiple upstream branches, refusing to push.

Khi tôi làm git push -u origin master nó có vẻ để thiết lập nó như là một chi nhánh theo dõi:

Branch master set up to track remote branch master from origin.

Nhưng lần sau khi tôi cố gắng git push nó từ chối làm điều này một lần nữa. Tôi đã cố gắng để google nhưng có vẻ như vấn đề là khá mới và tôi không thể tìm thấy bất kỳ lời giải thích cho hành vi này. Ý tưởng?

Cập nhật:./git/config

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:milk.git 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

Update2: giải quyết với git config remote.origin.push HEAD dòng sau xuất hiện trong .git/config để [remote "origin"] phần:

push = HEAD 

UPDATE3:

$ git branch -vv 
    billing  633c796 [origin/billing: behind 889] links 
* master  1a0de50 [origin/master: ahead 1] more fixes 
    new_master 3b880d7 [origin/new_master] branches diverged 
    photo_stacks 29c8f0d [origin/photo_stacks] 1st try 
    responsive 1dad980 [origin/responsive] update 

$ git push 
fatal: The current branch master has multiple upstream branches, refusing to push. 
+0

git 2.0? Mới nhất trên git-scm.com là 1.8.0, tôi không thấy bất cứ điều gì trong repo github cho git .. Tôi thiếu cái gì? – Collin

+0

Xin lỗi, xin lỗi, git 1.8.0, dunno tại sao tôi viết 2.0 – firedev

+1

Tệp '.git/config' của bạn trông như thế nào, đặc biệt là các phần dành cho nhánh này và nguồn gốc của bạn? – twalberg

Trả lời

87

Bạn có thể muốn làm như sau:

git config remote.origin.push HEAD 

Pushing mà không bất kỳ đối số trên một chi nhánh tổng thể có thể dẫn đến thông báo lỗi của bạn. Tôi không chắc đó có phải là một vấn đề hồi quy hay không, hoặc nếu nó luôn xảy ra.

+0

Cảm ơn, điều đó đã giúp ích gì nhưng làm sao? Tôi thấy một dòng mới trong phần '[remote" origin "]' trong cấu hình: 'push = HEAD'. Và tại sao nó nói rằng chủ nhân có nhiều nhánh thượng lưu? – firedev

+0

'git push' theo mặc định đẩy tất cả các nhánh vào điều khiển từ xa, bằng cách thêm cấu hình bạn yêu cầu git chỉ đẩy nhánh bạn đang mở. Có thể thông báo lỗi bạn nhận được là sai, tôi có nghĩa là tên chi nhánh là sai (chính), có thể có các chi nhánh khác gây ra vấn đề này. Nếu bạn chưa từng gặp vấn đề này với phiên bản git trước đó, điều đó có nghĩa là có sự cố hồi quy. –

+0

Vài tháng sau, tôi không hiểu tại sao điều này lại xảy ra, giờ thì một số kho lưu trữ từ chối đẩy. – firedev

11

Bạn phải chỉ định nhánh nào bạn đang cố gắng. git push sẽ tự động cố gắng đẩy tất cả các ref và thẻ mà các chi nhánh địa phương đang theo dõi. Có thể các chi nhánh trực tuyến tại máy chủ đã tiến lên phía trước. Do đó bạn có thể kết thúc với tình huống này. Bạn chỉ cần sử dụng

git push origin master 

Và cũng để điều chỉnh thay đổi, hãy thực hiện git pull Điều đó sẽ cập nhật thông tin cục bộ của bạn với một thay đổi từ máy chủ.

+0

Nhưng tôi đã làm 'git push origin master' ngay cả với khóa' -u' mà nên đặt 'origin/master' là upstream cho nhánh' master'. Dù tôi có làm thế nào đi chăng nữa, lần sau nó từ chối 'git push' – firedev

+0

thử git nhân bản lại theo cách khác hoặc thử đề nghị của Peter dưới đây – redDragonzz

25

Run git config -l và tìm kiếm để xem nếu bạn có nhiều dòng chứa branch.master * tài liệu tham khảo Các [chi nhánh "master"] phần có thể được nhân đôi ~/.gitconfig.git/config. Xóa một trong ~/.gitconfig cố định mutiple thượng nguồn phát hiện chi nhánh đối với tôi .

+1

Tôi đã có điều này: 'branch.master.remote = origin branch.master.merge = refs/heads/master' và thực sự tôi đã có' branch 'master "' trong '~/.gitconfig'. Đã xóa nó, sẽ thấy nó như thế nào, cảm ơn! – firedev

+1

Không chắc chắn nó xảy ra như thế nào, nhưng tôi đã có 'branch.master.remote = origin' và' branch.master.merge = refs/heads/master' cả hai _exactly_ lặp lại hai lần trong '.git/config' ... Loại bỏ sự trùng lặp đã giải quyết vấn đề này. – Lucas

+0

Tôi đã kết thúc với một vấn đề tương tự trên một trong các chi nhánh của tôi sau khi đổi tên nó tại địa phương và đẩy tên mới lên thượng nguồn. Tệp .git/config của tôi sau đó có hai mục nhập. Và giống như Lucas, đề xuất xóa bản sao sẽ giải quyết vấn đề này. –

1

Được rồi, sau khi xử lý vấn đề này hai lần với bản hoàn trả mới hoàn toàn, tôi có câu trả lời.

git -v từ xa

git rm từ xa (tất cả mọi thứ khác hơn là nguồn gốc nếu bạn đã thêm bất kỳ điều khiển từ xa khác)

git rm nguồn gốc từ xa

! cảnh báo: nhiều hơn một branch.master.từ xa < - điều này là tốt

git remote thêm nguồn gốc [email protected]: tenban/yourrepo

pull + push = FIXED

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