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 [email protected]:my_user_name/my_repo.git
kapso
sumber
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 [email protected]: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 [email protected]: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 .

Mark Longair
sumber
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.

Abdo
sumber
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 = [email protected]:my_user_name/my_repo.git

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

Jaket ungu
sumber
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
ParamQuery
sumber
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 = [email protected]: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 = [email protected]:user/repo.git
Peter Mortensen
sumber
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://[email protected]/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.

Cerin
sumber
0

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

ssh -T [email protected]

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

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin [email protected]: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 [email protected]:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master
rshdev
sumber
0

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

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

Cmnds di bawah ini akan memperbaiki masalah ini.

 git pull --rebase
 git push
Hariharan AR
sumber
-1

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

Alih-alih git push origin master, gunakan:

git push [email protected]:my_user_name/my_repo.git master
Tiberiu Craciun
sumber