Không thể đẩy đến chi nhánh từ xa, không thể giải quyết đến chi nhánh


110

Tôi đã chuyển các kho lưu trữ của mình từ Bitbucket hoặc Github. Tôi không nghĩ điều này quan trọng nhưng đó là điều duy nhất khác biệt ... Trong một thời gian ngắn, tôi đã thiết lập hai điều khiển từ xa:

origin: bitbucket
github: github

Sau đó, tôi đã xóa cả hai và trỏ origin sang github:

git remote remove origin
git remote remove github
git remote add origin https://github....

Đẩy thử nghiệm nhánh phát triển:

git push origin develop

Mọi thứ được cập nhật, ok, tốt.

Tạo một nhánh mới cho một số công việc như thường lệ:

git checkout -b Feature/Name

Cập nhật một hoặc hai tệp. Cố gắng chuyển sang điều khiển từ xa:

git push origin Feature/Name

Điều này dẫn đến lỗi:

nghiêm trọng: Tính năng / Tên không thể được giải quyết cho chi nhánh

Tìm kiếm trực tuyến cho vấn đề này, tìm một số thông tin về việc đảm bảo HEAD là chính xác, một số nội dung khác về việc đảm bảo rằng tôi đã nhập đúng trường hợp tên chi nhánh của mình (tuy nhiên, tại thời điểm này, chi nhánh chưa tồn tại trên điều khiển từ xa). Không thể giải quyết.

Chạy lệnh này:

git push --all -u

Điều này đã đưa Feature/Namechi nhánh của tôi đến github, nhưng vẫn thấy hành vi giống như trước:

git push origin develop
git push origin Feature/Name

Lần đầu tiên hoạt động, lần thứ hai ném cùng một lỗi.

Tôi không thể tìm ra lý do tại sao tôi gặp lỗi này. Bất kỳ ý tưởng?


1
Bạn đã ở chi nhánh nào khi bạn thực hiện Feature/Name? Bạn có chắc là Feature/Name tồn tại và đó là chi nhánh đã kiểm tra không? Kiểm tra với git branch.
Schwern

@Schwern - Chỉ tồn tại ba nhánh (cục bộ và từ xa): phát triển, thử nghiệm và làm chủ. Sau khi một nhánh được dọn dẹp và hợp nhất trở lại để phát triển, tôi xóa chúng cục bộ (và từ xa nếu có). Tôi chắc chắn rằng chỉ có ba của tôi - tôi đã không mở dự án trong một thời gian và điều đầu tiên tôi làm là kiểm tra và đảm bảo rằng tôi không có nhánh nào lỏng lẻo.
jleach

Điều đó có nghĩa là bạn đã chạy git branchđể xác minh Feature/Nametồn tại cục bộ? Đừng tin tưởng vào GUI hoặc IDE. Ngoài ra, bạn đã hiểu đúng trường hợp?
Schwern

Làm thế nào về git push origin Feature/Name:Feature/Name?
ElpieKay

Bây giờ tôi bực mình ... không hiểu tại sao nó không hoạt động ngay từ đầu, nhưng sau khi sử dụng, git push --all -utôi có nhánh mới trong github, nhưng vẫn không thể đẩy từ cục bộ, phải không? Đây là những gì đã xảy ra với điều đó ... tên chi nhánh thực tế là SQLMigration/ReportFixesgì và trong github là gì SqlMigration/ReportFixes. Vì vậy, bây giờ tôi có thể git push origin SqlMigration/ReportFixes- tại sao github lại thay đổi cách viết hoa cho tôi? Agh.
jleach

Câu trả lời:


379

Tôi cũng đang gặp vấn đề này, và nó khiến tôi phát điên. Tôi đã có một cái gì đó giống như feature/namenhưng git branch -acho tôi thấy FEATURE/name. Đổi tên chi nhánh, xóa và tạo lại nó, không có gì hiệu quả. Cuối cùng điều gì đã sửa nó:

Đi vào .git/refs/heads

Bạn sẽ thấy một FEATUREthư mục. Đổi tên nó thành feature.


4
Đây là câu trả lời chính xác cho tôi. Đang sử dụng gitbash trên windows, và đã tạo feature / some-feature và Feature / some-feature.
Dylan McCurry

Đây phải được đánh dấu là câu trả lời đúng. Đã giúp tôi ra ngoài. Cảm ơn!
GuiDoody

21
Tôi nợ bạn bia cho câu trả lời này! : D
Vojta,

1
Chà, bắt hay lắm. Đã tiết kiệm cho tôi rất nhiều thời gian. Cảm ơn !
Piyush

2
@Pegues - đã xong. Tôi không nghĩ rằng câu trả lời này tồn tại cho đến khi tôi gặp vấn đề, nhưng nó có vẻ là câu trả lời phổ biến, vì vậy bạn có thể bắt đầu.
jleach

30

Dựa trên thử nghiệm của riêng tôi và ý kiến ​​của OP , tôi nghĩ rằng tại một số điểm, họ đã ngụy tạo về cách viết hoa của tên chi nhánh.

Đầu tiên, tôi tin rằng OP trên hệ điều hành không phân biệt chữ hoa chữ thường như OS X hoặc Windows. Sau đó, họ đã làm một cái gì đó như thế này ...

$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'

$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.

Lưu ý sự khác biệt về cách viết hoa. Cũng lưu ý rằng lỗi rất khác với nếu bạn chỉ đánh máy tên.

$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to 'git@github.com:schwern/testing123.git'

Vì Github sử dụng hệ thống tệp để lưu trữ tên chi nhánh nên nó sẽ cố gắng mở .git/refs/heads/SqlMigration/ReportFixes. Bởi vì hệ thống tệp không phân biệt chữ hoa chữ thường, nó mở thành công .git/refs/heads/SqlMigration/ReportFixesnhưng bị nhầm lẫn khi nó cố gắng so sánh tên nhánh phân biệt chữ hoa chữ thường và chúng không khớp.

Làm thế nào họ vào được trạng thái có chi nhánh cục bộ SQLMigration/ReportFixesvà chi nhánh ở xa thì SqlMigration/ReportFixestôi không rõ. Tôi không tin rằng Github đã nhầm lẫn với tên chi nhánh từ xa. Giải thích đơn giản nhất là người khác có quyền truy cập đẩy đã thay đổi tên chi nhánh từ xa. Nếu không, tại một số thời điểm họ đã làm điều gì đó quản lý để tạo điều khiển từ xa với lỗi đánh máy. Nếu họ kiểm tra lịch sử vỏ, có lẽ với history | grep -i sqlmigration/reportfixeshọ, họ có thể tìm thấy một lệnh mà họ đã gõ nhầm vỏ.


Tôi gặp sự cố này khi thay đổi trường hợp của các ký tự trong tên nhánh trên OS X. Việc thay đổi chúng trở lại đã giải quyết được sự cố.
Steven C. Howell

Điều này cũng có thể xảy ra khi bạn có một nhánh trước đó, chẳng hạn AM-xxx / some_branch, sau đó tạo một nhánh khác AM-XXX / another_branch, git sẽ cho phép cục bộ các trường hợp khác nhau và không thể ghép nối hai nhánh từ xa.
timpwbaker

Có, nó có thể để kiểm tra trong trường hợp nhầm lẫn nhưng không kiểm tra trong .. Chỉ lộn xộn.
javadba

12

Git sẽ cho phép bạn kiểm tra chi nhánh hiện tại với một cách viết khác và nó sẽ không tìm thấy bản giới thiệu trên điều khiển từ xa.

Chỉ cần tìm ra con đường khó khăn.


1
đây là vấn đề của tôi. Tôi khuyên bạn nên thực hiện nhanh chóng > git branchvà xác minh rằng chi nhánh của bạn có dấu * bên cạnh.
Andy Danger Gagne,

Điều này cũng xảy ra với tôi. @AndyDangerGagne, tôi rất vui vì bạn đã đề xuất điều này - không có * bên cạnh chi nhánh mà tôi đang ở, vì vậy tôi đã kiểm tra lại, lần này là chữ thường.
Cognitiaclaeves

9

Một điều tương tự đã xảy ra với tôi. Tôi đã tạo một nhánh có tên là "Feat / name". Tôi đã cố gắng đẩy nó bằng cách sử dụng:

git push - set-up origin origin Feat / name

Tôi cũng mắc phải lỗi nghiêm trọng giống như bạn:

Fat: Feat / name không thể được phân giải thành nhánh

Để giải quyết nó, tôi đã tạo một nhánh mới vì tôi có rất ít tệp bị ảnh hưởng. Sau đó, tôi liệt kê các chi nhánh của mình để xóa nhầm và nó hiển thị không có nắp:

  • feat / tên

Tôi đã sử dụng mũ trước đây nhưng không bao giờ trên caracter đầu tiên. Có vẻ như git không thích nó ...


Tôi đã cùng THX trường hợp: D
abdoutelb

5

Nó phân biệt chữ hoa chữ thường, chỉ cần đảm bảo chi nhánh đã tạo và chi nhánh đẩy đến cả hai đều có cùng vốn.

Thí dụ:

git checkout -b "TASK-135-hello-world"

SAI cách thực hiện:

git push origin task-135-hello-world     #FATAL: task-135-hello-world cannot be resolved to branch

CÁCH LÀM ĐÚNG :

git push origin TASK-135-hello-world

2

Có thể bạn quên chạy git fetch? cần phải tìm nạp dữ liệu từ kho lưu trữ từ xa! Thử chạygit fetch remote/branch


2

Đối với trường hợp của tôi, tôi đã từng có thư mục nhánh (hoặc bất cứ điều gì được gọi là) với các chữ cái in hoa, sau đó tôi tạo một thư mục mới với cách viết hoa khác biệt (chữ thường) nhưng git thực sự tạo nhánh bằng chữ hoa.

Tôi đã tạo một nhánh giống như feature-ABC/branch1trước đây và đẩy nó. Sau đó, tôi tạo một nhánh feature-abc/branch2(lưu ý chữ thường ABC), và cố gắng đẩy nó sang điều khiển từ xa bằng cách sử dụng git push --set-upstream origin feature-abc/branch2và nhận được lỗi 'không thể giải quyết để phân nhánh'. Vì vậy, tôi git branchvà thấy rằng nó thực sự được tạo ra feature-ABC/branch2thay vì feature-abc/branch1cho tôi. Tôi kiểm tra lại với git checkout feature-ABC/feature2và đẩy nó bằng cách sử dụng chữ hoa ( feature-ABC/feature2) để giải quyết nó.


2

Tôi phải đối mặt với cùng một vấn đề đó là do đi nhánh với cách viết hoa sai. git cho tôi chuyển sang nhánh có cách viết hoa không chính xác, tức là feature/Namethay vì feature/name. Đã tìm thấy một giải pháp dễ dàng hơn được liệt kê ở trên chỉ:

  • cam kết các thay đổi của bạn đối với 'tính năng / Tên'
  • git checkout master (or develop)
  • git checkout feature/name <với cách viết hoa chính xác
  • git push

2

Tôi đã giải quyết vấn đề này trong Windows 10 bằng cách sử dụng cmd thay vì GitBash .

Nó liên quan đến ký tự và cách git và dòng lệnh xử lý chúng.


1

Bạn có thể đã tạo nhánh tương tự nhưng phân biệt chữ hoa chữ thường khác nhau, sau đó bạn phải chạy:

git branch -D <name-of-different-case-branch>

và sau đó cố gắng đẩy một lần nữa.


1

Câu trả lời có sửa đổi một chút của @Ty Le:

không cần thay đổi tệp nào đối với tôi - tôi có một nhánh có tên là 'Tính năng / ...' và trong khi đẩy ngược dòng, tôi đã đổi tiêu đề thành 'tính năng / ...' (trường hợp của chữ cái đầu tiên được đổi thành chữ cái thấp hơn ).


0

Tôi cũng vừa gặp vấn đề này và các nhánh bình thường của tôi bắt đầu bằng pb-3.1-12345/namebranchnhưng tôi đã vô tình viết hoa 2 chữ cái đầu tiên PB-3.1/12345/namebranch. Sau khi đổi tên nhánh để sử dụng các chữ thường, tôi có thể tạo nhánh.


0

đối với tôi, tôi đã đặt tên chi nhánh là

Rel4.6 / bug / Some-short-description

tất cả những gì tôi phải làm là khi sử dụng

git push origin R elx.x / bug / Some-short-description

viết

git push origin r elx.x / bug / Some-short-description

như tôi đã từng tạo các nhánh bằng cách sử dụng chữ cái r nhỏ trong rel.

vì vậy, những gì đã gây ra vấn đề này?

khi tôi liệt kê .git/refs/headsnội dung tôi tìm thấy

drwxr-xr-x  4 eslam_khoga  staff   128B Sep 22 20:22 relx.x

nhưng không Relx.x!

và bên trong nó bugvà bên trong bugtên chi nhánh của tôi.

Vì vậy, git cố gắng tạo một dir có cùng tên nhưng các chữ cái khác nhau

nhưng hệ thống không phân biệt chữ hoa chữ thường.

Đó là những gì gây ra vấn đề này!


0

Gặp vấn đề tương tự với các loại vỏ khác nhau.

Đã kiểm tra để phát triển (hoặc tổng thể) sau đó thay đổi tên (tên sai) thành một cái gì đó khác như thử nghiệm.

  • phát triển thanh toán git
  • git chi nhánh -m kiểm tra sai tên

sau đó đổi tên trở lại đúng tên

  • git branch -m test right-name

sau đó thanh toán cho chi nhánh đúng tên

  • git checkout đúng tên

sau đó nó hoạt động để đẩy đến chi nhánh từ xa

  • git push origin right-name

0

Đối với tôi, vấn đề là tôi đã đặt git và hệ thống tệp macOS của tôi thành hai độ nhạy chữ hoa chữ thường khác nhau. Máy Mac của tôi được định dạng APFS / Phân biệt chữ hoa chữ thường: KHÔNG nhưng tôi đã lật cài đặt git của mình tại một số thời điểm cố gắng khắc phục sự cố kỳ lạ với việc đặt tên nội dung hình ảnh Xcode nên git config --global core.ignorecase false . Bằng cách lật lại nó, căn chỉnh các cài đặt và tạo lại nhánh và đẩy tôi trở lại đúng hướng.

git config --global core.ignorecase true

Tín dụng: https://www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx


0

Tôi đã có cùng một vấn đề nhưng đã được giải quyết. Tôi nhận ra rằng tên chi nhánh có phân biệt chữ hoa chữ thường. Nhánh chính trong GitHub là 'master', trong khi trong lệnh gitbash của tôi là 'Master'. Tôi đã đổi tên Master trong kho lưu trữ cục bộ thành master và nó đã hoạt động! 😀😀


0

Tôi gặp phải vấn đề tương tự và nhận thấy rằng tôi đã trộn lẫn vỏ bọc trong khi kiểm tra chi nhánh. Tôi đã kiểm tra branchNamethay vì BranchNamevà khi tôi cố gắng đẩy sang điều khiển từ xa, tôi gặp lỗi tương tự.

Cách khắc phục:

git push --set-upstream origin BranchName

Bằng cách đặt ngược dòng thành tên chính xác, chi nhánh chính xác đã được cập nhật trên github và sau đó tôi có thể kiểm tra tên chi nhánh chính xác với

git checkout BranchName 

Và nó sẽ được cập nhật với lần đẩy cuối cùng của bạn.


-1

Nếu bạn đang ở chi nhánh địa phương, có thể đổi tên chi nhánh "Tính năng / Tên" thành "tính năng / Tên"

git -m feature/Name

nếu bạn gặp vấn đề để thực git pushhiện thanh toán ở chi nhánh khác (ex development) và quay lại chi nhánh đã đổi tên

git checkout feature/Name

và thử lại của bạn git push

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.