fatal: Master cabang saat ini tidak memiliki cabang hulu

227

Saya mencoba mendorong salah satu proyek saya ke github, dan saya terus mendapatkan kesalahan ini:

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

Jadi saya mencobanya dan mendapatkan ini:

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

fatal: Authentication failed

Urutan stackoverflow lain menyarankan saya mencoba yang berikut, dengan hasil yang mengecewakan.

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

fatal: Authentication failed

Lalu saya mencoba ini:

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

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

fatal: Authentication failed

Ada petunjuk?

pengguna1524361
sumber
1
Repo harus ada di github sebelum Anda dapat mendorongnya. Melakukannya? Dan apakah repo yang Anda kerjakan merupakan tiruan dari itu?
matt
Saya mengkloning repo dari Github kemudian menambahkan 1 baris ke file readme dan kemudian mencoba mendorongnya kembali.
user1524361
1
saya mendapatkan kesalahan yang sama karena saya lupa mengkomit file
Mateen
3
-u dan --set-upstream sama
brainLoop
Ingin memberi tahu semua orang tentang gitperintah yang diposting OP membantu saya, bahkan lebih dari jawaban
Nathan

Jawaban:

94

Anda memperbaiki push, tetapi, terlepas dari masalah push itu (yang saya jelaskan di " Mengapa saya perlu mendorong cabang baru secara eksplisit? ": git push -u origin masterAtau git push -u origin --all), Anda sekarang perlu menyelesaikan masalah otentikasi.

Itu tergantung pada url Anda (ssh as in ' [email protected]/yourRepo, atau https as in https://github.com/You/YourRepo)

Untuk https url:

Jika akun Anda dilindungi oleh otentikasi dua faktor , kata sandi Anda tidak akan berfungsi (untuk https url), seperti yang dijelaskan di sini atau di sini .

Masalah yang sama jika kata sandi Anda mengandung karakter khusus (seperti dalam jawaban ini )

Jika https tidak berfungsi (karena Anda tidak ingin membuat kunci sekunder, PAT: Token Akses pribadi), maka Anda dapat beralih ke ssh, seperti yang saya tunjukkan di sini .


Seperti dicatat oleh qwerty di komentar, Anda dapat secara otomatis membuat cabang dengan nama yang sama di remote dengan:

git push -u origin head 

Mengapa?

  • KEPALA (lihat Anda .git\HEADfile) memiliki refspec cabang saat memeriksa (misalnya: ref: refs/heads/master)
  • default kebijakan dorongan adalah sederhana

Karena refpec yang digunakan untuk push ini adalah head: (no destination), :<dst>berarti tidak ada untuk memperbarui ref yang sama dengan <src>(head, yang merupakan cabang).

Itu tidak akan bekerja jika KEPALA terlepas .

VONC
sumber
1
luar biasa, inilah yang kami butuhkan untuk memperbaiki masalah penyebab utama, tidak hanya memperbaikinya di permukaan
workplaylifecycle
Jika Anda berada di cabang mana pun, ini berguna git push origin head -u. Secara otomatis membuat cabang dengan nama yang sama pada remote.
Qwerty
1
@Qwerty Terima kasih, poin bagus. Saya telah memasukkan komentar Anda (dengan perincian tambahan) dalam jawaban untuk lebih banyak visibilitas.
VonC
115

Anda juga dapat menggunakan perintah berikut:

git push -u origin master

Ini menciptakan (-u) cabang lain di repo jarak jauh Anda. Setelah otentikasi menggunakan ssh dilakukan itu.

Tantrajja
sumber
2
Ini benar-benar relevan dengan masalah, karena masalah ini berkaitan dengan otentikasi. Dia juga menyatakan bahwa dia sudah mencobanya di posnya.
Mike Precup
2
Saya downvoted karena 2 alasan. Yang pertama: OP menyatakan bahwa dia sudah mencoba ini. Yang kedua: -uopsi adalah pintasan untuk --set-upstreamopsi yang tidak ada hubungannya dengan pembuatan cabang baru. Dari dokumentasi opsi -uatau--set-upstream : "Untuk setiap cabang yang mutakhir atau berhasil didorong, tambahkan referensi upstream (pelacakan), digunakan oleh argumen-less git-pull [1] dan perintah lainnya.". Sebenarnya saya tidak mengerti mengapa jawaban ini banyak dipilih karena menyesatkan.
louisfischer
38

Rupanya Anda juga mendapatkan pesan kesalahan ini ketika Anda lupa --allparameter saat mendorong untuk pertama kalinya. saya menulis

git push -u origin

yang memberikan kesalahan ini, seharusnya

git push -u origin --all

Oh betapa aku suka kesalahan salin-tempel ini ...

Mata
sumber
3
Terima kasih. Saya mendapatkan kesalahan ini dalam Visual Studio Code dan ini berhasil, tetapi dalam konteks beberapa pengembang dapatkah seseorang menjelaskan apa yang dilakukannya?
Hell.Bent
15

Anda harus mengkonfigurasi jarak jauh terlebih dahulu, lalu mendorong.

git remote add origin url-to-your-repo

Instruksi Aktual

Santosh Pillai
sumber
13

Silakan coba skenario ini

git push -f --set-upstream origin master
lorem
sumber
7
Anda harus memberikan penjelasan lebih lanjut tentang bagaimana dan mengapa ini bekerja.
Benoît Latinier
6
"Tidak buruk" adalah penjelasan yang sangat buruk untuk apa pun. "Tidak buruk" membuat jawaban Anda sangat buruk.
GhostCat
Ini tidak melakukan apa pun untuk mengatasi kesalahan yang disebutkan OP: "Otentikasi gagal"
Sean the Bean
Iya. Itu berhasil bagi saya. Saya pikir ini memaksa komit ke cabang hulu (jauh).
vkg
12

Jika Anda menentukan tindakan git pushyang harus diambil jika tidak ada refspec diberikan pada baris perintah, tidak ada refspec yang dikonfigurasi di remote, dan tidak ada refspec yang tersirat oleh salah satu opsi yang diberikan pada baris perintah.

Lakukan saja:

git config --global push.default current

kemudian

git push
DariusV
sumber
1
Anda perlu menyadari bahwa ini memang mengubah pengaturan global git Anda, yang mungkin memiliki beberapa efek buruk. Tapi ini persis apa yang saya cari.
Mavamaarten
@Mavamaarten apa efek samping potensial?
kosii
7

Yah, saya mengalami masalah yang sama saat mengunggah dan saya menyelesaikannya dengan melakukan hal yang sama yang dikatakannya untuk dilakukan: Sebelumnya saya mencoba untuk mendorong melalui terminal ke repositori saya di linux dengan https seperti

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

Tetapi tidak mendapatkan hasil apa pun dan karenanya saya turun lebih dalam dan mencoba:

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

Dan itu berhasil. Maka Anda akan diminta dengan nama pengguna dan kata sandi. Saya juga membuat token dan bukannya Kata Sandi saya tempel token dan dengan demikian, berhasil dilakukan.

  1. Untuk membuat token, masuk ke akun Github Anda dan di Pengaturan Pengembang lalu buat token lain.
  2. Setelah mendapatkan itu, salin token itu dan tempel di prompt kata sandi ketika diminta.
Siddharth Choudhary
sumber
6

di sisi yang sangat sederhana, setelah Anda memiliki cabang lain, Anda tidak bisa hanya menggunakan untuk mendorong cabang

git push

Tetapi Anda perlu menentukan cabang sekarang, bahkan jika Anda telah checkout cabang yang ingin Anda tekan, jadi

git push origin <feature_branch>

Di mana bahkan mastercabang

Abhishek
sumber
5

Saya membuat kesalahan sederhana yaitu lupa untuk melakukan:

git commit -m "first commit"

lalu git push origin masterbekerja.

yl_low
sumber
4

Saya memiliki masalah yang sama

masukkan deskripsi gambar di sini

Saya mengatasinya yang digunakan di bawah perintah

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

dan itu akan menambahkan konfigurasi dalam file konfigurasi di folder .git.

masukkan deskripsi gambar di sini

bluetata
sumber
3

Pertama gunakan git pull origin your_branch_name Laluuse git push origin your_branch_name

FRabbi
sumber
Maaf jika ini terdengar konyol. Cara mengenal nama cabang saya. Repo saya ada di AWS.
Pravinraj Venkatachalam
Gunakan "git branch"
Darius Miliauskas
3

Ada solusi sederhana untuk ini yang bekerja untuk saya di macOS Sierra. Saya melakukan dua perintah ini:

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

Jika itu menunjukkan kesalahan fatal tentang hulu setelah dorongan di masa depan maka jalankan saja:

git push --set-upstream origin master
theRana
sumber
0

1. Komputer dan github Anda terkait. Gunakan SSH. Kode komputer sehingga Anda tidak perlu mengirim verifikasi deskripsi gambar yang dimasukkan di sini

2. git tidak dapat mengelola folder kosong. Jadi, Anda harus menulis readme.md yang disimpan dalam file. Kalau tidak, Anda tidak akan menemukan file.

3. Proyek lokal Anda bukanlah proyek baru. Silahkan

git init

git remote add origin +"githublink"

git add .

git commit -m "" pergi lagi.

4. lalugit pull origin master (kuncinya)

5. Akhirnyagit push origin master (selesaikan semua masalah).

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

王 逍遥
sumber
0

Jika Anda mencoba untuk mendorong kode Anda langsung ke cabang master kemudian gunakan perintah

git push origin master

Itu membantu saya.

HitechZa
sumber
0

Saya juga mendapat kesalahan yang sama. Saya pikir itu karena saya mengkloningnya dan mencoba mendorong kembali. $ git push -u master asal Ini adalah perintah yang benar. Coba saja

Menghitung objek: 8, selesai. Kompresi Delta menggunakan hingga 2 utas. Mengompresi objek: 100% (4/4), selesai. Objek penulisan: 100% (8/8), 691 byte | 46,00 KiB / s, selesai. Total 8 (delta 1), digunakan kembali 0 (delta 0) jarak jauh: Menyelesaikan delta: 100% (1/1), selesai.

  • master [cabang baru] -> master Cabang master diatur untuk melacak master cabang jarak jauh dari asal.

    It was successful. Try to create new u branch 
    
Malsha
sumber
0

Saya memiliki masalah yang sama, penyebabnya adalah saya lupa menentukan cabang

git push myorigin feature/23082018_my-feature_eb
Hitam
sumber
0

Bagi saya, saya mendorong perubahan ke repo pribadi yang saya tidak punya akses tulis. Pastikan Anda memiliki hak akses yang valid saat melakukan operasi push atau pull.

Anda dapat langsung memverifikasi via

mayank dhawariya
sumber
1
"Langsung verifikasi via" apa?
Mike Poole
0

Bagi saya, itu karena saya telah menghapus folder .git yang tersembunyi .

Saya memperbaikinya dengan menghapus folder, kloning ulang, dan membuat kembali perubahan.

AmmarBaali
sumber
0

Jika Anda berada di cabang mana pun, Anda dapat menggunakan ini:

git push origin head -u

Ini secara otomatis akan membuat cabang baru dengan nama yang sama pada remote.

Qwerty
sumber
-1

Untuk mengatasi masalah ini, saat memeriksa kode gititu sendiri, Anda perlu memberikan perintah seperti di bawah ini:

git checkout -b branchname origin/branchname

Di sini, secara default kami sedang mengatur the upstream branch, sehingga Anda tidak akan menghadapi masalah yang disebutkan.

Deepa
sumber
-2

Bagi saya masalahnya datang dari nama cabang saya: "# name-of-my-branch", tanpa "#" itu berfungsi dengan baik!

aurelienv
sumber