Git / GitHub tidak bisa mendorong untuk menguasai


151

Saya baru mengenal Git / GitHub dan mengalami masalah. Saya membuat proyek pengujian dan menambahkannya ke repositori lokal. Sekarang saya mencoba menambahkan file / proyek ke repositori jarak jauh.

Inilah yang saya lakukan (dan ini berhasil) -

git remote add origin git://github.com/my_user_name/my_repo.git

Sekarang ketika saya mencoba untuk mendorong repositori ke GitHub, menggunakan perintah berikut, saya mendapatkan kesalahan berikut -

git push origin master

Kesalahan -

fatal: remote error:
You can't push to git://github.com/my_user_name/my_repo.git
Use git@github.com:my_user_name/my_repo.git

Ada tautan bantuan ( help.github.com ) di bagian bawah semua halaman github. Bantuan menjelaskan banyak topik termasuk yang ini. Saya sarankan membaca itu dan kemudian bertanya tentang hal-hal spesifik yang tidak Anda mengerti.
jamessan

21
jika jamessan menunjuk ke lokasi tertentu di halaman bantuan, itu akan lebih bermanfaat.
Deonomo

1
kemungkinan duplikat dari git github tidak dapat mendorong ke asal
gion_13

Jawaban:


244

GitHub tidak mendukung mendorong protokol Git, yang ditunjukkan dengan penggunaan awal URL Anda git://. Seperti yang dikatakan pesan kesalahan, jika Anda ingin mendorong, Anda harus menggunakan URL SSH git@github.com:my_user_name/my_repo.gitatau protokol "HTTP pintar" dengan menggunakan https://URL yang GitHub tunjukkan kepada Anda untuk repositori Anda.

(Pembaruan: yang mengejutkan saya, beberapa orang tampaknya berpikir bahwa dengan ini saya menyarankan bahwa "https" berarti "HTTP pintar", yang saya tidak. Git digunakan untuk memiliki protokol "HTTP bodoh" yang tidak mengizinkan mendorong sebelumnya "HTTP pintar" yang digunakan GitHub diperkenalkan - bisa digunakan lebih dari satu httpatau https. Perbedaan antara protokol transfer yang digunakan oleh Git dijelaskan dalam tautan di bawah ini.)

Jika Anda ingin mengubah URL asal, Anda bisa melakukan:

git remote set-url origin git@github.com:my_user_name/my_repo.git

atau

git remote set-url origin https://github.com/my_user_name/my_repo.git

Informasi lebih lanjut tersedia di 10.6 Git Internal - Protokol Transfer .


Jadi saya mengubah URL dan mencoba lagi push, dapatkan kesalahan ini sekarang - ERROR: my_user_name / my_repo.git tidak ada. Apakah Anda memasukkannya dengan benar? fatal: Ujung remote digantung tiba
kapso

Apakah URL yang Anda tentukan pasti yang dapat Anda salin dan tempel dari halaman untuk repositori Anda di GitHub? (Ini sensitif huruf, kebetulan).
Mark Longair

1
OK, Anda harus membuat repositori di GitHub sebelum Anda bisa mendorongnya - ketika Anda melakukannya, itu akan memberi Anda petunjuk tentang cara mengkloning atau mendorong ke repositori.
Mark Longair

1
Saya hanya punya masalah yang sama. Sebenarnya masalahnya adalah Anda memiliki garis miring "/" di antara github.com dan nama pengguna Anda. Dan itu harus menjadi titik dua ":". Itulah masalahnya: D
Wilmer E. Henao

2
@WilmerEHenaoH: itu mungkin masalah Anda , tapi itu bukan masalah dalam pertanyaan atau dengan jawaban saya;) (Hanya untuk kepentingan, kadang-kadang ada kebingungan mengenai dua gaya URL SSH di git , salah satunya menggunakan tanda titik dua untuk memisahkan hostname dan path dan yang lainnya tidak.)
Mark Longair

37

Gunakan jawaban Mark Longair , tetapi pastikan untuk menggunakan tautan HTTPS ke repositori:

git remote set-url origin https://github.com/my_user_name/my_repo.git

Anda bisa menggunakannya git push origin master.


1
Ini bekerja untuk saya. Kemudian ketikkan git pushjuga berfungsi.
youngzy

13

Solusi yang digunakan Mark Longair git remote set-url...cukup jelas. Anda juga bisa mendapatkan perilaku yang sama dengan secara langsung mengedit bagian file .git / config ini:

sebelum:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/my_user_name/my_repo.git

setelah:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:my_user_name/my_repo.git

(Dan sebaliknya, git remote set-url...doa menghasilkan perubahan di atas.)


2

Ada solusi sederhana untuk ini bagi seseorang yang baru dalam hal ini:

Edit file konfigurasi di direktori .git lokal Anda ( config). Ubah git:ke https:bawah.

[remote "origin"]
    url = https://github.com/your_username/your_repo

1
Salah, protokol https tidak akan mengizinkan dorongan. Lihat: "Pro Git" buku, bagian 4.1.4 "Protokol HTTP / S". Tautan: git-scm.com/book/en/v2
Kevin J. Rice

@ KevinJ.Rice: uhm, di mana isinya bahwa ? Github menggunakan protokol HTTP pintar dan yang memungkinkan untuk mendorong dengan baik .
Martijn Pieters

1

Saya mengalami masalah ini setelah memutakhirkan klien Git , dan tiba-tiba repositori saya tidak dapat mendorong.

Saya menemukan bahwa beberapa remote lama memiliki nilai yang salah url, bahkan melalui remote aktif saya saat ini memiliki nilai yang sama urldan berfungsi dengan baik.

Tetapi ada juga pushurlparam, jadi menambahkannya untuk remote lama bekerja untuk saya:

Sebelum:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:user/repo.git

CATATAN: Bagian ini dari "config" file tidak digunakan selama berabad-abad, tetapi klien baru mengeluh tentang URL yang salah:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*

Jadi saya menambahkan pushurlparam ke remote lama:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
    pushurl = git@github.com:user/repo.git

1

Kesalahan ini terjadi ketika Anda mengkloning repo menggunakan panggilan seperti:

git clone git://github.com/....git

Ini pada dasarnya membuat Anda sebagai pengguna pull-only, yang tidak bisa mendorong perubahan.

Saya memperbaikinya dengan membuka .git/configfile repo saya dan mengubah baris:

[remote "origin"]
    url = git://github.com/myusername/myrepo.git

untuk:

[remote "origin"]
    url = ssh+git://git@github.com/myusername/myrepo.git

Ini ssh+gitprotokol dengan gitpengguna adalah mekanisme otentikasi disukai oleh Github.

Jawaban lain yang disebutkan di sini secara teknis berfungsi, tetapi semuanya tampaknya memotong ssh, mengharuskan Anda memasukkan kata sandi secara manual, yang mungkin tidak Anda inginkan.



0

Saya menambahkan pubkey saya ke github.com dan ini berhasil:

ssh -T git@github.com

Tapi saya menerima kesalahan "Anda tidak bisa mendorong" setelah melakukan kesalahan ini:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin git@github.com:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

Alih-alih melakukan apa yang seharusnya saya lakukan:

mkdir dotfiles
cd dotfiles
git init
git remote add origin git@github.com:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master

0

Untuk mengatur httpssecara global alih-alih git://:

git config --global url.https://github.com/.insteadOf git://github.com/

0

Cmnds di bawah ini akan memperbaiki masalah ini.

 git pull --rebase
 git push

-1

Cara tercepat untuk mengatasinya adalah dengan mengganti origindengan saran yang diberikannya.

Alih-alih git push origin master, gunakan:

git push git@github.com:my_user_name/my_repo.git master
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.