2016-10-23 22 views
6

Tôi có một dự án với một vài người bạn trong GitLab, và dĩ nhiên có nhánh chính, và cũng có một số người khác. Khi tôi nhân bản kho lưu trữ, tôi cũng tạo ra một luồng ngược dòng với lệnh git remote add upstream ....Lỗi: src refspec không khớp với bất kỳ

Sau đó, tôi đã phát hành git fetch upstream. Tiếp theo là git checkout upstream/test1. Bây giờ, nếu tôi gõ git branch -a, tôi nhận được một kết quả như thế này:

* (HEAD detached at upstream/test1) 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/upstream/test1 
    remotes/upstream/master 

này là tất cả tốt, nhưng sau đó tôi đã làm một số thay đổi đối với mã trong ngành upstream/test1 của tôi, và tôi muốn đẩy họ origin/test1 kho, Tôi nhận được thông báo lỗi trên tiêu đề. Xin lưu ý rằng tôi làm theo các bước dưới đây để đẩy:

git add . 
git commit -m "Sample message" 
git push -u origin test1 

Nếu tôi phát hành git show-ref, tôi nhận được kết quả như sau:

refs/heads/master 
refs/remotes/origin/HEAD 
refs/remotes/origin/master 
refs/remotes/upstream/test1 
refs/remotes/upstream/master 

Tôi đã kiểm tra questions sau, nhưng không tìm thấy nó hữu ích. Bất kỳ ý tưởng làm thế nào để giải quyết nó?

Trả lời

2

Bạn dường như không có chi nhánh địa phương có tên test1. Bạn có một chi nhánh từ xa từ xa có tên test1 được liên kết với điều khiển từ xa upstream của bạn.

Bạn không nên chỉnh sửa trực tiếp chi nhánh upstream/test1. Trong thực tế, cố gắng để kiểm tra xem ra nên đã mang lại một cảnh báo:

$ git checkout upstream/test1 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

Bạn nên thay vì đầu tiên kiểm tra một chi nhánh địa phương theo dõi các chi nhánh từ xa, mà phải tìm một cái gì đó như thế này:

$ git checkout test1 
Branch test1 set up to track remote branch test1 from upstream by rebasing. 
Switched to a new branch 'test1' 

Sau khi thực hiện việc này, một số điện thoại git push chưa được trang bị sẽ chuyển sang điều khiển từ xa upstream, trong khi git push origin test1 sẽ đẩy tới điều khiển từ xa origin của bạn. Thêm cờ -u sẽ chuyển nhánh theo dõi để thay vì theo dõi upstream/test1, chi nhánh của bạn sẽ theo dõi origin/test1, do đó các hoạt động trong tương lai git pullgit push sẽ đề cập đến chi nhánh từ xa đó (origin/test1) theo mặc định.

+0

Cảm ơn này làm việc. – typos

0

Sau đây cũng sẽ tạo một chi nhánh mới ở địa phương và ở xa. Tôi làm theo điều này khi tôi tạo một chi nhánh mới để làm việc.

git checkout master

git pull origin master

git checkout -b your-branch

Tận dụng những thay đổi mới

git push -u origin your-branch

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