Git / GitHub master'a zorlayamaz


151

Git / GitHub'da yeniyim ve bir sorunla karşılaştım. Bir test projesi oluşturdum ve yerel depoya ekledim. Şimdi uzak depoya dosya / proje eklemeye çalışıyorum.

İşte yaptım (ve bu işe yaradı) -

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

Şimdi aşağıdaki komutu kullanarak havuzu GitHub'a aktarmaya çalıştığımda, şu hatayı alıyorum -

git push origin master

Hata -

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

Tüm github sayfalarının altında bir yardım bağlantısı ( help.github.com ) var. Bu yardım da dahil olmak üzere birçok konuyu açıklar. Bunları okumanızı ve sonra anlamadığınız belirli şeyler hakkında sorular sormanızı öneririm.
jamessan

21
jamessan yardım sayfalarındaki belirli bir yeri işaret etseydi, bu daha yararlı olurdu.
Deonomo

Yanıtlar:


244

GitHub, başlangıç ​​URL'sini kullanımınızla belirtilen Git protokolünü aktarmayı desteklemez git://. Hata mesajının dediği gibi, itmek istiyorsanız , GitHub'ın deponuz için size gösterdiği URL'yi git@github.com:my_user_name/my_repo.gitkullanarak SSH URL'sini veya "akıllı HTTP" protokolünü kullanmalısınız https://.

(Güncelleme: Şaşırtıcı bir şekilde, bazı insanlar görünüşe göre bununla "https" nin "akıllı HTTP" anlamına geldiğini öne sürdüğümü düşünüyorlardı. Git, daha önce itmeye izin vermeyen bir "aptal HTTP" protokolüne sahipti. GitHub kullandığı tanıtıldı olduğu "akıllı HTTP" - ya ya üzerinde kullanılabilir httpveya https. aşağıdaki linke açıklanmıştır Git kullandığı aktarım protokolleri arasındaki farklar).

Menşe URL'sini değiştirmek istiyorsanız, şunları yapabilirsiniz:

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

veya

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

Daha fazla bilgi 10.6 Git Dahili - Aktarım Protokolleri'nde bulunabilir .


URL'yi değiştirdim ve itmeyi tekrar denedim, şimdi bu hatayı alın - HATA: my_user_name / my_repo.git mevcut değil. Doğru girdiniz mi? ölümcül: Uzak uç beklenmedik bir şekilde telefonu kapattı
kapso

Ayarladığınız URL, GitHub'daki havuzunuz için sayfadan kopyalayıp yapıştırabileceğiniz URL mi? (Bu arada büyük / küçük harfe duyarlıdır.)
Mark Longair

1
Tamam, iyi gitmeden önce GitHub'da havuzu oluşturmanız gerekir - bunu yaptığınızda, depoyu nasıl klonlayacağınız veya ona nasıl aktarılacağınız konusunda talimatlar verecektir.
Mark Longair

1
Ben de aynı problemi yaşadım. Aslında sorun, github.com ile kullanıcı adınızın arasında "/" işareti bırakmanızdı. Ve bu iki nokta üst üste ":" olmalıdır. Sorun bu: D
Wilmer E.Henao

2
@WilmerEHenaoH: bu sizin probleminiz olabilir , ancak sorudaki veya cevabımdaki sorun değildi;) (Sadece ilgi için, git'de bazen SSH URL'nin iki stili hakkında kafa karışıklığı var , bunlardan biri ana bilgisayar adını ve yolunu ayırmak için iki nokta üst üste işaret eder ve diğeri bunu gerçekleştirmez.)
Mark Longair

37

Mark Longair'in cevabını kullanın , ancak depoya HTTPS bağlantısını kullandığınızdan emin olun:

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

O zaman kullanabilirsiniz git push origin master.


1
Benim için çalışıyor. Sonra sadece yazın git pushda çalışır.
youngzy

13

Mark Longair'in çözümü git remote set-url...oldukça açık. Aynı davranışı doğrudan .git / config dosyasının bu bölümünü düzenleyerek de alabilirsiniz:

önce:

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

sonra:

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

(Tam tersine, git remote set-url...çağırma yukarıdaki değişikliği meydana getirir.)


2

Bunun için yeni biri için basit bir çözüm var:

Yerel .git dizininizdeki ( config) yapılandırma dosyasını düzenleyin . Değişim git:için https:aşağıda.

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

1
Yanlış, https protokolü push'lara izin vermeyecektir. Bakınız: "Pro Git" kitabı, bölüm 4.1.4 "HTTP / S Protokolü". Bağlantı: git-scm.com/book/en/v2
Kevin J. Rice

@ KevinJ.Rice: uhm, nerede yazıyor bu ? Github akıllı HTTP protokolünü kullanır ve bu da iyi bir şekilde itmeye izin verir .
Martijn Pieters

1

Git istemcisini yükselttikten sonra bu sorunu yaşadım ve aniden depom itilemedi.

Bazı eski uzaktan kumandanın yanlış değeri olduğunu url, şu anda aktif olan uzaktan kumandayla bile aynı değere sahip olduğunu urlve iyi çalıştığını buldum .

Ama pushurlparam de vardı , bu yüzden eski uzaktan kumanda için eklemek benim için çalıştı:

Önce:

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

Not: "config" dosyasının bu bölümü, çağlar boyunca kullanılmadı, ancak yeni istemci yanlış URL hakkında şikayet etti:

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

Bu yüzden pushurleski uzaktan kumandaya param ekledim :

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

1

Bu hata, aşağıdaki gibi bir çağrıyı kullanarak bir repoyu klonladığınızda oluşur:

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

Bu temelde değişiklikleri itemeyen, yalnızca çekilebilir bir kullanıcı olarak ayarlar.

Repo'mun .git/configdosyasını açarak ve satırı değiştirerek bunu düzelttim :

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

için:

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

Kullanıcı ssh+gitile bu protokol gitGithub tarafından tercih edilen kimlik doğrulama mekanizmasıdır.

Burada bahsedilen diğer cevaplar teknik olarak çalışır, ancak hepsi ssh'yi atlıyor gibi görünüyor ve muhtemelen istemediğiniz bir parolayı manuel olarak girmenizi gerektiriyor.



0

Pubkey'imi github.com'a ekledim ve bu başarılı oldu:

ssh -T git@github.com

Ama yanlış yaptıktan sonra "itemezsin" hatası aldım:

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

Yapmam gereken şeyi yapmak yerine:

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

httpsYerine genel olarak ayarlamak için git://:

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


-1

Bunu aşmanın en hızlı yolu origin, verdiği öneri ile değiştirmektir .

Bunun yerine şunu git push origin masterkullanın:

git push git@github.com:my_user_name/my_repo.git master
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.