Git, gây tử vong: Kết thúc từ xa treo lên bất ngờ


275

Khi tôi cố chạy

git push origin master --force

Tôi vừa có

Counting objects: 2649, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Đó có phải là một cái gì đó để làm với không an toàn? Tôi đã thử tạo một khóa công khai như trong câu trả lời cho Fatal: Đầu từ xa bị treo bất ngờ và chạy lại, nhưng nó vẫn không hoạt động. Tôi không thực sự sử dụng chìa khóa? Nếu vậy, làm thế nào để tôi sử dụng nó?


vui lòng hiển thị đầu ra củagit remote -v
CharlesB

1
bản sao Git
CharlesB

13
git config http.postBuffer 524288000 # nó hoạt động với tôi
Hari Das

nếu bạn error: could not lock config file .git/config: No such file or directorythấy stackoverflow.com/a/32329453/827525
niksmac

1
Tôi không thể có bất kỳ giải pháp được đề xuất nào để làm việc. Sau đó, tôi đã thử GitKraken. Đây là một trong số ít các chương trình Git không sử dụng git.exe. GitKraken có thể làm điều đó. Sau khi GitKraken đã đẩy kho lưu trữ, tôi có thể chuyển trở lại git.exe và đồng bộ hóa mà không gặp sự cố nào.
lars pehrsson

Câu trả lời:


83

Điều này trông tương tự như Làm cách nào để github mặc định thành ssh và không https cho các kho lưu trữ mới . Có lẽ nên thử chuyển từ giao thức http sang ssh:

$ git remote add origin git@github.com:username/project.git

Tại sao tôi không thể chuyển từ http sang https?
DanielLC

10
bash-3.2 $ git từ xa thêm nguồn gốc git@github.com: xxx / xx.git fatal: nguồn gốc từ xa đã tồn tại. TẠI SAO ?
almaruf

11
@almaruf đó là vì điều khiển từ xa originđã có và bạn đang cố gắng thay thế nó. git không cho phép điều đó. Vì vậy, trước tiên bạn phải làm git remote rm originsau đó thử lại. Nó sẽ hoạt động
Alfie

đảm bảo bạn khởi tạo dự án nếu đó là một bản sao mới vớigit init
Raul

bạn có thể sử dụng giao thức git qua ssh (yêu cầu khóa ssh) hoặc giao thức https yêu cầu tên người dùng và mật khẩu thông qua mã thông báo truy cập cá nhân - Tôi thích sau này
Raul

519

Vấn đề là do cài đặt bộ đệm git / https. Để giải quyết nó (lấy từ Git không thành công khi đẩy commit vào github )

git config http.postBuffer 524288000

Và chạy lại lệnh


4
Tôi cần bộ đệm cao hơn 500MB - điều đó có thể không? Nó dường như không tạo ra sự khác biệt nếu tôi làm cho số postBuffer cao hơn ...
jowie

Cảm ơn liên kết - Tôi đã sắp xếp vấn đề bằng cách chia lực đẩy thành các phần nhỏ hơn. Nếu tôi có một vấn đề một lần nữa tôi biết nơi để tìm!
jowie

17
Nó sẽ là một ý tưởng tốt để sử dụng này với --global? Tôi đối phó với các kho lớn thường xuyên.
DaAwgieP 2/2/2015

2
@ shivam13juna không có gì bị xóa khỏi internet: :) web.archive.org/web/20170119225336/http://github.com/gitlabhq/
Roman M

3
Tôi đã chạy "git config http.postBuffer 524288000", nhưng vẫn không giải quyết được vấn đề, nó vẫn nói như vậy, đầu từ xa bị treo bất ngờ
Narendra

80

Nguyên nhân: Kích thước bài đăng mặc định cho Git đã bị vượt quá.

Giải pháp :

Điều hướng để repo.

Chạy lệnh sau để tăng bộ đệm lên 500MB sau khi điều hướng đến kho lưu trữ:

git config http.postBuffer 524288000

2
Vui lòng định dạng mã của bạn bằng cách sử dụng các thẻ mã. Cũng giải thích những gì mã làm bởi vì đây là một bài viết cũ, làm cho câu trả lời của bạn tốt nhất có thể.
Dan Grahn

31
Bạn cũng có thể sử dụng git config ssh.postBuffer 524288000nếu đăng qua ssh thay vì http.
John M

Đối với một số trường hợpgit config --global http.postBuffer 100000000
Công việc M

Tôi nhận được 'fatal: not in a git' sau khi thực hiện lệnh này
ka3ak

@JohnM Tùy chọn này dường như không tồn tại, nó không được ghi lại trong trang man hoặc git-scm.com/docs/git-config
Không có ai vào

29

Bạn có thể gặp một lỗi như thế này

lỗi: không thể khóa tập tin cấu hình .git / config: Không có tập tin hoặc thư mục như vậy

đó là bởi vì bạn không có .git/configtệp cục bộ Bạn có thể làm cho nó hoạt động bằng lệnh này

git config --global http.postBuffer 524288000


điều này đã giúp tôi khi cố gắng sao chép trên một PC rất chậm bên trong cygwin - nó tiếp tục bị treo từ xa - cho đến khi tôi sử dụng lệnh này
serup

Điều này giúp tôi giải quyết vấn đề "nghiêm trọng: Kết thúc từ xa bị treo khi tiếp xúc ban đầu".
Karthic.K

15

Các giải pháp khác không hoạt động trong trường hợp của tôi, thực hiện một bộ sưu tập rác đã sửa nó cho tôi:

git gc --aggressive


21
Điều này đã khắc phục vấn đề của tôi, nhưng nó cũng đè bẹp các thay đổi CHÍNH bị tách ra thành trạng thái mà việc hợp nhất chúng trở nên đáng ghét (mọi thứ đã được chuyển đổi thành THÊM). Tôi ước tôi đã nghiên cứu cái này nhiều hơn trước khi chạy nó.
MatrixManAtYrService

Làm thế nào điều này làm cho vấn đề?
Annadate Piyush

9

Trái với một trong những câu trả lời khác - Tôi gặp vấn đề khi sử dụng ssh - Tôi đã chuyển sang https và nó đã được sửa.

git remote remove origin
git remote add origin https://github..com/user/repo
git push --set-upstream origin master

8

Lỗi này cũng có thể được ném qua các quyền ghi bị thiếu trên kho lưu trữ.


Trường hợp cụ thể của tôi đã đi như thế này:

  1. Tôi đã tạo một repo với rootngười dùng máy chủ của mình (thông qua SSH).
  2. Tôi đã cài đặt một dịch vụ git và tạo một gitngười dùng linux có thể quản lý tất cả các hành động liên quan đến git.
  3. Vào thời điểm đó, tôi đã quên rằng repo đã được tạo với rootngười dùng ngay từ đầu và gitngười dùng đơn giản là không có quyền truy cập tệp để ghi bất cứ điều gì vào kho lưu trữ.

4

Thủ phạm (trong trường hợp của tôi):
Một mạng có độ trễ cao.

Đây không phải là một câu trả lời mỗi lần mà là một quan sát có thể giúp đỡ người khác. Tôi thấy rằng lỗi này thỉnh thoảng xuất hiện trên các mạng có độ trễ cao (ví dụ: tôi phải sử dụng đĩa Vệ tinh để truy cập internet). Tốc độ của mạng là tốt, nhưng độ trễ có thể cao. Lưu ý: Vấn đề chỉ tồn tại trong một số trường hợp nhất định, nhưng tôi chưa xác định mô hình là gì.

Giảm thiểu tạm thời:
Tôi đã chuyển mạng mạng Tôi đã chuyển sang mạng di động chậm hơn nhưng độ trễ thấp hơn (điện thoại của tôi được sử dụng làm điểm phát sóng) và vấn đề đã biến mất. Lưu ý rằng tôi chỉ có thể thực hiện việc này lặp đi lặp lại vì kết nối di động của tôi cũng không liên tục. Cộng với việc sử dụng băng thông làm tăng thêm chi phí. Tôi cũng may mắn vì tôi có sẵn tùy chọn này. Không phải ai cũng làm.

Tôi chắc chắn rằng có một số cài đặt cấu hình ở đâu đó làm cho git Giáp hoặc ssh hoặc cuộn tròn hoặc bất cứ lúc nào ra ngoài, trước đó, khoan dung hơn với các mạng như vậy, nhưng tôi không biết nó là gì.

Một lời biện hộ cho các nhà phát triển:
Những loại vấn đề này là một vấn đề thường xuyên đối với dân cư nông thôn. Hãy nghĩ về chúng tôi khi bạn thiết kế hệ thống, công cụ và ứng dụng của mình. Cảm ơn bạn.


3

Trong trường hợp của chúng tôi, vấn đề là một bản sao đã viết một .git/configtệp chứa mục nhập url là phương thức truy cập chỉ đọc. Thay đổi url từ ://phương thức sang @phương pháp đã khắc phục sự cố.

Chạy git remote -vchiếu sáng vấn đề một số.


3

Nếu bạn đang sử dụng git cho windows (và rất có thể là, nếu bạn đang làm điều này trên máy windows) và không có cách khắc phục nào khác ở đây có hiệu quả với bạn, hãy thử truy cập https://github.com/git-for- windows / git / phát hành và nhận phiên bản trên hoặc sau phiên bản 2.4.5. Sửa nó ngay cho tôi.


3

Bạn có thể đã sao chép kho lưu trữ trong kho hiện có, để giải quyết vấn đề có thể chỉ cần sao chép kho lưu trữ trong thư mục khác và sao chép các thay đổi vào thư mục mới này và sau đó chạy đẩy.


chúng tôi có một quy trình công việc beta ansible và xây dựng lại trang web gây ra chính xác điều này, nhân bản repo trên đầu trang khác. Ansible điều cần khắc phục nhưng đặt ra một vấn đề git. Cảm ơn :-)
Alejandro Moreno

2

Một sự bổ sung khác, vì tôi gặp phải lỗi này theo một cách khác và Google đã đưa tôi đến đây.

Vấn đề của tôi là một sự không phù hợp của trường hợp; một camelCase và một không. Rõ ràng, GIT ngăn bạn làm điều này mà không cho bạn biết lý do tại sao. Vì vậy, nếu các chi nhánh của bạn khác với điều khiển từ xa chỉ trong cách viết hoa, hãy thử thay đổi chúng để giống hệt nhau.

Xem: Git: 'Không thể giải quyết chính chủ cho chi nhánh' sau khi hợp nhất


Tôi nghĩ rằng tôi đã bao gồm tất cả các thông tin có liên quan - nó gây ra bởi một trường hợp không phù hợp. Tôi đã thêm một câu để rõ ràng hơn, nhưng đây không thực sự là về liên kết. Xin lỗi nếu điều đó không rõ ràng.
Thomas

2

Điều này có thể xảy ra sau khi cập nhật nền tảng OSX của bạn.

Mở Terminal và điều hướng đến thư mục .ssh của bạn và nhập ssh-add -K ~/.ssh/id_rsa


2

Plesk Nginx và GIT tôi đã nhận lỗi này trên Plesk git và trong khi đẩy một repo lớn với (ai mà biết được những gì) nó đã cho tôi lỗi này với HTTP mã 413 và tôi nhìn vào sau máy chủ là Plesk và nó có nginx chạy cũng như apache2 Vì vậy, tôi đã xem xét các bản ghi và tìm thấy lỗi trong các bản ghi nginx

Theo liên kết này để cho phép plesk xây dựng lại cấu hình với tải lên tệp lớn hơn.

Tôi đã bỏ qua phần php cho git

Sau đó git đẩy làm việc mà không có bất kỳ lỗi nào.


1

Tôi đã xảy ra lỗi tương tự khi kéo.
Tôi đã thực hiện thủ thuật "http.postBuffer". Nó đã giải quyết nó, nhưng khi tôi muốn đẩy, tôi lại gặp lỗi.

Điều gì đã giải quyết vấn đề của tôi:
1. Nhân bản nó vào một thư mục khác với một máy ảo khác. (Linux).
2. Tôi đã thực hiện các thay đổi của mình.
3. Đẩy nó bằng máy ảo ban đầu mà ban đầu tôi không thể đẩy. (Các cửa sổ)


đây không phải là một giải pháp bạn thân!
Behrouz.M

2
Tôi biết đây không phải là một giải pháp lý tưởng, nhưng nó đã giải quyết vấn đề trong trường hợp của tôi. Nó có thể vẫn còn cứu cánh khi tất cả các câu trả lời khác không thành công, như họ đã làm trong trường hợp của tôi.
nopara73

1

Tôi đã gặp lỗi này khi tôi có lỗi khóa không chính xác trong .ssh. Thêm pubkey vào github (trong cài đặt) đã khắc phục sự cố này cho tôi.


1

Tôi có cùng một vấn đề. Tôi nhận thấy từ trang web git rằng URL bản sao SSH có cấu trúc tiếp theo:

git@github.com:user/project.git

Tôi có thể giải quyết vấn đề của mình chỉ bằng cách thay đổi ":" bằng "/", như sau:

git@github.com/user/project.git

có thể điều này có thể hữu ích.


1

Có vẻ như gần như vô nghĩa để thêm một câu trả lời, nhưng tôi đã chiến đấu với điều này trong nhiều năm khi cuối cùng tôi phát hiện ra đó là Visual Studio Online đang bị cúp điện lẻ tẻ. Điều đó trở nên rõ ràng khi VS liên tục nhắc nhở về các khoản tín dụng và trang web của VSO đôi khi đưa ra 500.

Counting objects: 138816, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38049/38049), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054
The remote end hung up unexpectedly/138816), 33.30 MiB | 3.00 KiB/s
Writing objects: 100% (138816/138816), 50.21 MiB | 3.00 KiB/s, done.
Total 138816 (delta 100197), reused 134574 (delta 96515)
fatal: The remote end hung up unexpectedly
Everything up-to-date

Tôi đã đặt bộ đệm bài đăng HTTP trở lại 2Mb sau đó, vì tôi thực sự nghĩ rằng nó hoạt động tốt hơn với nhiều bài đăng nhỏ hơn.

Luke


1

Có vẻ như nó có thể là một trong một ngàn điều.

Đối với tôi, ban đầu tôi đã đẩy chủ và phát triển (chủ không có thay đổi) thông qua SourceTree. Thay đổi này để phát triển chỉ làm việc.


1

Tôi đã phải đối mặt với một lỗi tương tự khi tải lên một repo lớn, "gây tử vong: Đầu từ xa bị treo bất ngờ" mà không có thêm thông tin chi tiết.

Sau rất nhiều nghiên cứu, đây là những gì tôi đã làm:

  • Sử dụng SSH thay vì HTTPS, không giải quyết được vấn đề.
  • Tăng http.postBuffer tăng dần lên đến một giá trị rất lớn, vẫn không gặp may.
  • Tôi đã tìm ra rằng có thể là do các tệp lớn trong repo (vì đây là repo mới được di chuyển từ perforce), vì vậy tôi đã tạo lại repo bằng LFS, đặt LargeFileThrưỡng xuống 40m, giúp giảm đáng kể kích thước repo (từ 3,5G xuống 500M). Tôi nghĩ rằng điều này sẽ giải quyết vấn đề, nhưng thật ngạc nhiên tôi vẫn gặp phải lỗi tương tự.

Cuối cùng, tôi nhận ra rằng có thể tôi đang sử dụng một máy khách git cũ hơn, vì tôi không thấy các thông báo lỗi bổ sung. Tôi đã nâng cấp git client lên bản mới nhất (2.20.1) và voila, lỗi không còn nữa!


Tôi cũng đã có vấn đề chính xác này (di chuyển từ TFS mặc dù). Tôi đã nâng cấp từ 2.19 lên 2.20 và nó đã được sửa, một cái nhìn khó hiểu qua các ghi chú phát hành không tiết lộ vấn đề có thể là gì mặc dù.
George Richardson

Tôi vừa nâng cấp lên 2.20.1.windows.1 và nó vẫn không cho phép tôi chuyển sang kho lưu trữ từ xa
Vidar

@Vidar Có thể kiểm tra các tệp lớn, GitHub có giới hạn nghiêm ngặt là 100MB help.github.com/articles/what-is-my-disk-quota ; Hãy xem phần "Xem xét thủ công các tệp lớn trong kho lưu trữ của bạn" trong confluence.atlassian.com/bitbucket/ . trang này là một đọc tốt.
Mahmoud Hanafy

@MahmoudHanafy - cảm ơn - đó là một tham số trong web.config về kích thước tệp tối đa - tăng điều đó và git cư xử và mọi người đều hạnh phúc! Đó không phải là GitHub đối với tôi mà là riêng tư của chúng tôi trên trang web Bonobo.Git.Server.
Vidar


0

Tôi đã có thể khắc phục vấn đề này bằng Git Shell.

Mỗi kho lưu trữ trong github.com cung cấp cho bạn URL HTTPS / SSH / Subversion mà bạn có thể sử dụng để tải xuống bằng Shell, xem tại đây: http://prntscr.com/8ydguv .
Dựa trên những thay đổi gần đây của GitHub, SSH dường như là phương pháp tốt nhất.

Lệnh sử dụng trong Shell:

git clone "URL of repo goes here w/ no quotes"

"Git Shell" nghĩa là gì? Sử dụng gittrong một thiết bị đầu cuối?
Karl Richter

0

Làm điều này để xem khóa bạn đang sử dụng; ssh -vT git@github.digitalglobe.com

Sau đó, đảm bảo trong bản dựng của bạn, bạn có chạy này khi bắt đầu. eval "$ (ssh-agent -s)" ssh-add ~ / .ssh / id_rsa


0

1) cd vào thư mục dự án

2) git status

3) git checkout -f HEAD

4) xác nhận thành công bằng cách kéo xuống chủ một lần nữa để đảm bảo bạn cập nhật nếu repo của bạn trông không đầy đủ

Điều này hoạt động nếu bạn gặp lỗi trong câu hỏi từ Git của Visual Studio khi nhân bản một repo từ Bitbucket


0

Điều này cũng có thể xảy ra nếu bất kỳ cam kết nào bạn đang đẩy không đúng định dạng.

Tôi (vô tình) đã có một cam kết với trường Email tác giả không đúng, nhưng tất cả những gì tôi nhận được là thông remote end hung upbáo lỗi mơ hồ này . Tôi đã có thể đẩy các chi nhánh khác không chỉ một chi nhánh này, vì vậy tôi bắt đầu đẩy các cam kết từ chi nhánh "xấu" tại một thời điểm cho đến khi cuối cùng tôi đã hạ cánh tại:

Pushing to git@github.com:directangular/unicorn.git
Counting objects: 100% (9/9), done.
Delta compression using up to 20 threads
Writing objects: 100% (5/5), 549 bytes | 549.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: error: object 74c7584ff0b93591c19d3a3c19695889dd2274d2: badEmail: invalid author/committer line - bad email        
remote: fatal: fsck error in packed object        
error: remote unpack failed: index-pack abnormal exit
To github.com:directangular/unicorn.git
 ! [remote rejected]       pizzafeast -> pizzafeast (failed)
error: failed to push some refs to 'git@github.com:directangular/unicorn.git'

Vì vậy, có vẻ như remote end hung up unexpectedlylỗi là "nuốt" thông báo lỗi thực tế, có lẽ là một loại cam kết không đúng định dạng như tôi có ở đây.

Sau khi sửa email không đúng định dạng, tôi đã có thể đẩy tốt.


0

Tôi không nghĩ rằng đó là một ý tưởng tốt để làm điều đó nhưng nếu bạn có bản sao lưu trong máy của bạn .. đẩy thêm một lần nữa rồi thử nhân bản repo và sau đó xóa .git khỏi thư mục cũ và di chuyển .git từ thư mục nhân bản mới .. git đã được giải quyết nhưng vì vấn đề này, một số tệp có thể không tải lên tại git. Đẩy tất cả lại từ ur sao lưu và sau đó kéo nó đến máy chủ của bạn hoặc máy khác nơi nó bị dòng điện. Ngay bây giờ tôi vừa mới làm ... Làm việc cho tôi .. và sao lưu thư mục của bạn trước khi làm điều này.

Và xin vui lòng sửa tôi nếu tôi sai. Tôi cũng không biết những gì có thể đi sai sau khi làm điều này? Nhưng lần này nó thực sự hoạt động.


0

vấn đề của tôi (gây tử vong: Kết thúc từ xa bị treo bất ngờ) đã được giải quyết bằng cách kiểm tra quyền và kho lưu trữ.

Chủ sở hữu tệp lưu trữ git phải là người dùng mà bạn muốn đẩy / kéo / sao chép với nó.


0

Không có câu trả lời nào ở trên làm việc cho tôi, nhưng đây là những gì đã làm.

1) xóa .git/khỏi dự án của bạn
2) sao chép repo từ xa đến một số vị trí mới như máy tính để bàn của bạn. git clone https://github.com/foo/bar.git
3) di chuyển .git/từ vị trí mới sang vị trí cũ
4) tái cam kết và thúc đẩy các thay đổi của bạn


0

Nguyên nhân gây ra sự cố cho tôi là do cài đặt mạng: Tôi có thẻ wifi "Kẻ giết người" dường như không hợp với các gói mạng theo cách mà SSH và SSL không thích.

Để khắc phục sự cố, tôi phải vào "Trung tâm điều khiển kẻ giết người", "Thông số" và tắt "Phát hiện luồng nâng cao" - các lệnh git bắt đầu hoạt động trở lại ngay lập tức.


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.