2009-06-06 104 views
22

Tôi có kho lưu trữ công cộng tại github.com với 2 chi nhánh: mastertest.Lỗi khi "git push" gửi github

Tôi tạo ra một thư mục mới trong nước và đã làm:

[ ] git clone [email protected]:{username}/{projectname}.git 

Sau đó, tôi đã tạo ra một chi nhánh mới có tên my_test với

[ ] git branch my_test 

và chuyển sang nó.

[ ] git checkout my_test 

Sau đó, tôi sáp nhập nó từ test chi nhánh của tôi về kho lưu trữ công cộng của tôi với

[ ] git merge origin/test 

và nó dẫn đến một nhanh về phía trước.

Tôi đã thực hiện một số thay đổi và cam kết. Sau đó, tôi đã cố gắng để đẩy địa phương my_test chi nhánh đến chi nhánh test công cộng tại github với

[ ] git push [email protected]:{username}/{projectname}.git test 

nhưng tôi đã nhận lỗi này:

error: src refspec test does not match any. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:{username}/{projectname}.git 

Tôi đang làm gì sai?

+0

Bản sao có thể có của [src refspec master không khớp với bất kỳ khi nào cam kết trong git] (http://stackoverflow.com/questions/4181861/src-refspec-master-does-not -match-any-when-push-commits-in-git) –

+0

Bản sao có thể xảy ra của [Lỗi chính gốc đẩy trên kho lưu trữ mới] (http://stackoverflow.com/q/827351/456814). –

Trả lời

30

Có lẽ thử:

git push [email protected]:{username}/{projectname}.git HEAD:test 

Định dạng của tham số cuối cùng trên dòng lệnh là một refspec mà là một ref nguồn theo sau dấu hai chấm và sau đó là ref đích. Bạn cũng có thể sử dụng tên chi nhánh địa phương của bạn (my_test) thay vì HEAD để chắc chắn rằng bạn đang đẩy chi nhánh chính xác.

Tài liệu cho git push có thêm chi tiết về thông số này.

+0

Thats đã hoạt động. Cảm ơn bạn. – ebsbk

+0

Nó hoạt động như một nét duyên dáng :) –

+0

Tôi không hiểu. Tại sao nó hoạt động khi sử dụng HEAD, nhưng không phải khi sử dụng tên chi nhánh địa phương của tôi? –

17

Ngoài ra, bạn không cần phải nhập toàn bộ url mỗi lần bạn muốn đẩy. Khi bạn chạy bản sao, git lưu URL đó là 'origin', đó là lý do tại sao bạn có thể chạy một cái gì đó như 'merge origin/test' - nó có nghĩa là nhánh 'test' trên máy chủ 'origin' của bạn. Vì vậy, cách đơn giản nhất để đẩy máy chủ của bạn trong trường hợp đó sẽ là:

git push origin my_test:test 

Điều đó sẽ đẩy địa phương chi nhánh 'my_test' của mình vào 'thử' chi nhánh trên 'nguồn gốc' máy chủ của bạn. Nếu bạn đã đặt tên chi nhánh địa phương của bạn giống như chi nhánh trên máy chủ, thì dấu hai chấm không phải là cần thiết, bạn có thể chỉ cần thực hiện:

git push origin test 
1

Tôi nghĩ ở đây bạn sẽ cần thiết lập theo dõi chi nhánh. Hãy chạy sau để cho phép theo dõi

git branch --track my_test origin/my_test 

Để kiểm tra

git push -u origin my_test 
git pull origin my_test 
1

Lỗi này cũng đi lên nếu bạn cố gắng đẩy vào một kho lưu trữ mới mà không cần bất cứ điều gì cam kết đầu tiên.Hãy thử:

git add -A 
git commit -am 'Initial commit' 

Sau đó thử đẩy lại.

0

Bạn cần đảm bảo rằng kho lưu trữ cục bộ của bạn có cùng tên với kho lưu trữ từ xa mà bạn đang cố gắng đẩy.

Đầu tiên, thay đổi kho lưu trữ bằng cách sử dụng git branch -m "test" để "my_test" sẽ là "test". Thứ hai, chỉ cần thử nghiệm xuất xứ git push