gây tử vong: Chủ chi nhánh hiện tại không có chi nhánh thượng nguồn


227

Tôi đang cố gắng đẩy một trong những dự án của mình lên github và tôi tiếp tục gặp lỗi này:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

Vì vậy, tôi đã thử nó và nhận được điều này:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Một luồng stackoverflow khác đề nghị tôi thử các cách sau, với kết quả đáng thất vọng.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Sau đó, tôi đã thử điều này:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

Có gợi ý nào không?


1
Repo phải tồn tại tại github trước khi bạn có thể đẩy nó. Phải không? Và có phải repo bạn đang làm việc với một bản sao của nó?
matt

Tôi đã nhân bản repo từ Github sau đó thêm 1 dòng vào tệp readme và sau đó cố gắng đẩy nó trở lại.
dùng1524361

1
tôi đã nhận được cùng một lỗi vì tôi quên cam kết các tập tin
Mateen

3
-u và --set-ngược dòng là như nhau
brainLoop

Muốn cho mọi người biết các gitlệnh mà OP đã đăng đã giúp tôi, thậm chí còn hơn cả câu trả lời
Nathan

Câu trả lời:


94

Bạn đã sửa lỗi đẩy, nhưng, độc lập với vấn đề đẩy đó (mà tôi đã giải thích trong " Tại sao tôi cần phải đẩy một nhánh mới rõ ràng? ": git push -u origin masterHoặc git push -u origin --all), bây giờ bạn cần giải quyết vấn đề xác thực.

Điều đó phụ thuộc vào url của bạn (ssh như trong ' git@github.com/yourRepohoặc https như trong https://github.com/You/YourRepo)

Đối với url https:

Nếu tài khoản của bạn được bảo vệ bởi xác thực hai yếu tố , mật khẩu thông thường của bạn sẽ không hoạt động (đối với url https), như được giải thích tại đây hoặc tại đây .

Vấn đề tương tự nếu mật khẩu của bạn chứa ký tự đặc biệt (như trong câu trả lời này )

Nếu https không hoạt động (vì bạn không muốn tạo khóa phụ, Mã thông báo truy cập cá nhân), thì bạn có thể chuyển sang ssh, như tôi đã trình bày ở đây .


Theo ghi nhận của qwerty trong các bình luận, bạn có thể tự động tạo nhánh cùng tên trên điều khiển từ xa bằng:

git push -u origin head 

Tại sao?

  • CHÍNH (xem .git\HEADtệp của bạn ) có refspec của nhánh hiện đang được kiểm tra (ví dụ ref: refs/heads/master:)
  • chính sách đẩy mặc định là đơn giản

Vì refpec được sử dụng cho lần đẩy này là head: (không có đích), nên một :<dst>phương tiện bị thiếu để cập nhật cùng một ref với <src>(head, là một nhánh).

Điều đó sẽ không hoạt động nếu HEAD bị tách ra .


1
thật tuyệt vời, đây là những gì chúng ta cần để khắc phục vấn đề nguyên nhân gốc rễ, không chỉ khắc phục nó trên bề mặt
workplaylifecycle

Nếu bạn ở bất kỳ chi nhánh nào, điều này rất hữu ích git push origin head -u. Tự động tạo nhánh cùng tên trên remote.
Qwerty

1
@Qwerty Cảm ơn bạn, điểm tốt. Tôi đã bao gồm nhận xét của bạn (có thêm chi tiết) trong câu trả lời để dễ nhìn hơn.
VonC

115

Ngoài ra, bạn có thể sử dụng lệnh sau:

git push -u origin master

Điều này tạo ra (-u) một nhánh khác trong repo từ xa của bạn. Một khi xác thực bằng ssh được thực hiện đó là.


2
Điều này thực sự có liên quan đến vấn đề, vì vấn đề là với xác thực. Anh ấy cũng nói rằng anh ấy đã thử nó trong bài viết của mình.
Mike Precup

2
Tôi downvote vì 2 lý do. Người thứ nhất: OP tuyên bố rằng anh ta đã thử điều này. Thứ hai: -utùy chọn là lối tắt cho --set-upstreamtùy chọn không liên quan gì đến việc tạo chi nhánh mới. Từ tài liệu của tùy chọn -uhoặc--set-upstream : "Đối với mọi chi nhánh được cập nhật hoặc được đẩy thành công, hãy thêm tham chiếu (theo dõi) ngược dòng, được sử dụng bởi git-pull [1] và các lệnh khác.". Trên thực tế tôi không hiểu tại sao câu trả lời này lại được đánh giá cao đến mức nó gây hiểu lầm.
louisfischer

38

Rõ ràng bạn cũng nhận được thông báo lỗi này khi bạn quên --alltham số khi đẩy lần đầu tiên. tôi đã viết

git push -u origin

Điều này đã gây ra lỗi này, đáng lẽ phải có

git push -u origin --all

Ôi làm thế nào tôi yêu những lỗi sao chép này ...


3
Cảm ơn. Tôi đã gặp lỗi này trong Visual Studio Code và điều này đã hoạt động, nhưng trong bối cảnh nhiều nhà phát triển có thể giải thích điều này đã làm gì?
Địa ngục.


13

Hãy thử kịch bản này

git push -f --set-upstream origin master

7
Bạn nên cung cấp thêm lời giải thích về cách thức và lý do tại sao điều này hoạt động.
Benoît Latinier

6
"không tệ" là một lời giải thích thực sự tồi tệ cho bất cứ điều gì. "Không tệ" làm cho câu trả lời của bạn thực sự tồi tệ.
GhostCat

Điều này không có gì để giải quyết lỗi mà OP đã đề cập: "Xác thực thất bại"
Sean the Bean

Đúng. Nó đã làm việc cho tôi. Tôi nghĩ rằng điều này đang buộc các cam kết lên nhánh (từ xa).
vkg

12

Nếu bạn xác định hành động git pushthì nên thực hiện nếu không có refspec nào được đưa ra trên dòng lệnh, không có refspec nào được cấu hình trong điều khiển từ xa và không có refspec nào được ngụ ý bởi bất kỳ tùy chọn nào được đưa ra trên dòng lệnh.

Cứ làm đi:

git config --global push.default current

sau đó

git push

1
Bạn cần lưu ý rằng điều này không thay đổi cài đặt git toàn cầu của bạn, điều này có thể có một số tác động bất lợi. Nhưng đây chính xác là những gì tôi đang tìm kiếm.
Mavamaarten

@Mavamaarten các tác dụng phụ tiềm ẩn là gì?
kosii

7

Chà, tôi đã gặp rắc rối tương tự trong khi tải lên và tôi đã giải quyết nó bằng cách làm điều tương tự mà nó nói: Trước đó tôi đã cố gắng chuyển qua thiết bị đầu cuối đến kho lưu trữ của tôi trong linux bằng https như https

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Nhưng không nhận được kết quả nào và do đó tôi đã đi sâu hơn và cố gắng:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

Va no đa hoạt động. Do đó, bạn sẽ được nhắc với tên người dùng và mật khẩu. Tôi cũng đã tạo mã thông báo và thay vì Mật khẩu, tôi đã dán mã thông báo và do đó, được thực hiện thành công.

  1. Để tạo mã thông báo, hãy truy cập tài khoản Github của bạn và trong Cài đặt dành cho nhà phát triển, sau đó tạo mã thông báo khác.
  2. Sau khi nhận được điều đó, hãy sao chép mã thông báo đó và dán vào dấu nhắc mật khẩu khi được hỏi.

6

về một mặt rất đơn giản, một khi bạn có các nhánh khác, bạn không thể chỉ sử dụng để đẩy một nhánh

git push

Nhưng bạn cần chỉ định chi nhánh ngay bây giờ, ngay cả khi bạn đã kiểm tra chi nhánh bạn muốn đẩy, vì vậy

git push origin <feature_branch>

Nơi có thể là masterchi nhánh


5

Tôi đã thực hiện lỗi đơn giản là quên cam kết:

git commit -m "first commit"

sau đó git push origin masterlàm việc


4

Tôi đã từng gặp vấn đề tương tự

nhập mô tả hình ảnh ở đây

Tôi đã giải quyết nó được sử dụng dưới đây lệnh

$ git branch --set-upstream develop origin/develop

và nó sẽ thêm một cấu hình trong tệp cấu hình trong thư mục .git.

nhập mô tả hình ảnh ở đây


3

Sử dụng đầu tiên git pull origin your_branch_name Sau đó,use git push origin your_branch_name


Xin lỗi Nếu điều này nghe có vẻ ngớ ngẩn. Làm thế nào để biết tên chi nhánh của tôi. Repo của tôi là trong AWS.
Pravinraj Venkatachalam

Sử dụng "nhánh git"
Darius Miliauskas

3

Có một giải pháp đơn giản cho vấn đề này đối với tôi trên macOS Sierra. Tôi đã thực hiện hai lệnh này:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

Nếu nó hiển thị bất kỳ lỗi nghiêm trọng nào về việc ngược dòng sau bất kỳ lần đẩy nào trong tương lai thì chỉ cần chạy:

git push --set-upstream origin master

0

1. Một máy tính và github của bạn liên quan. Sử dụng SSH. Mã máy tính để bạn không cần gửi xác minh nhập mô tả hình ảnh ở đây

2. git không thể quản lý thư mục trống. Vì vậy, bạn phải viết một readme.md như vậy được lưu trong một tập tin. Nếu không, bạn sẽ không tìm thấy các tập tin.

3. Dự án địa phương của bạn là không có dự án mới di chuyển qua. Xin vui lòng

git init

git remote add origin +"githublink"

git add .

git commit -m "" đi lần nữa

4. sau đó git pull origin master(chìa khóa)

5. Cuối cùng git push origin master(giải quyết tất cả vấn đề).

http://my.oschina.net/psuyun/blog/123005参考链接


0

Nếu bạn đang cố gắng đẩy mã của mình trực tiếp đến nhánh chính thì hãy sử dụng lệnh

git push origin master

Nó giúp tôi.


0

Tôi cũng gặp lỗi tương tự. Tôi nghĩ rằng đó là do tôi nhân bản nó và cố gắng đẩy lùi. $ git push -u origin master Đây là lệnh đúng. Hãy thử

Đếm các đối tượng: 8, xong. Nén Delta sử dụng tối đa 2 luồng. Đối tượng nén: 100% (4/4), xong. Đối tượng viết: 100% (8/8), 691 byte | 46,00 KiB / s, xong. Tổng cộng 8 (delta 1), tái sử dụng 0 (delta 0) từ xa: Giải quyết deltas: 100% (1/1), đã xong.

  • [nhánh mới] master -> master Branch master được thiết lập để theo dõi master master từ xa từ gốc.

    It was successful. Try to create new u branch 
    

0

Tôi có cùng một vấn đề, nguyên nhân là do tôi quên chỉ định chi nhánh

git push myorigin feature/23082018_my-feature_eb

0

Đối với tôi, tôi đã đẩy các thay đổi sang một repo riêng mà tôi không có quyền truy cập ghi. Đảm bảo bạn có quyền truy cập hợp lệ trong khi thực hiện các thao tác đẩy hoặc kéo.

Bạn có thể xác minh trực tiếp qua


1
"Xác minh trực tiếp qua" cái gì?
Mike Poole

0

Đối với tôi, đó là vì tôi đã xóa thư mục .git ẩn .

Tôi đã sửa nó bằng cách xóa thư mục, sao chép lại và thực hiện lại các thay đổi.


0

Nếu bạn ở bất kỳ chi nhánh nào, bạn có thể sử dụng điều này:

git push origin head -u

Điều này sẽ tự động tạo chi nhánh mới cùng tên trên điều khiển từ xa.


-1

Để giải quyết vấn đề này, trong khi kiểm tra mã từ gitchính nó, bạn cần đưa ra lệnh như dưới đây:

git checkout -b branchname origin/branchname

Ở đây, theo mặc định, chúng tôi đang thiết lập the upstream branch, vì vậy bạn sẽ không phải đối mặt với vấn đề được đề cập.


-2

Đối với tôi, vấn đề đến từ tên chi nhánh của tôi: "# name-of-my-Branch", không có "#" thì nó hoạt động tốt!

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.