"Git push heroku ustası" nereye gönderileceğini ve farklı bir depoya nasıl aktarılacağını nasıl biliyor?


92

Heroku'da barındırılan bir arşive gönderirken, aşağıdaki komutu çalıştırmanız gerekir:

git push heroku master

Ne herokuve masterbu komuta gösteriyor? Git nereye gönderileceğini nasıl biliyor? (git yolu)

Ayrıca, heroku renamebir uygulamayı yeniden adlandırmak için kullanabileceğimi bilmiyordum , bu yüzden daha önce, trytryheroku uygulama adını kullandığımı ve şimdi kullandığımı söyleyin, heroku create real-thingancak bastırırsam, yine de trytryheroku'yu denemek için bastırıyor ... bunun yerine gerçek şey?

Yanıtlar:


107

'Heroku' bölümü, kurduğunuz uzaktan kumandanın adıdır - bir heroku uygulaması oluşturduğunuzda, uygulamanıza işaret eden bir git uzaktan çağrısı 'heroku' oluşturur - projenizde 'git remote' yazarsanız, size uzak uç noktaları gösterecektir. Sizi uzaktan kumandanın adı olarak 'heroku'yu kullanmaya mahkum eden hiçbir şey yoktur - eğer uygulamanız için birden fazla ortamınız varsa, örneğin üretim veya sahneleme adlı uzaktan kumandalarınız olabilir.

"Ana" bölüm, uzaktan kumandaya göndermek istediğiniz yerel şubedir. Örneğin 'özelliğim' adlı bir özellik dalında geliştirirseniz ve bunu heroku'ya dağıtmak istiyorsanız yaparsınız;

git push heroku myfeature:master

Ek: Burada ana itme benim yerel söylediğini myfeatureiçine dalını masteruzaktan üzerinde şube - not: Heroku yalnızca ana daldan dağıtabilir.

Eğer Heroku git uzaktan url değişecek bir uygulamayı yeniden adlandırırsanız - Bir yapmak git remote -v size app kullanıyor Repo budala gösterileceği, muhtemelen, eski Heroku kaynağını silip yenisini eklemek gerekir git remote rm herokuo zamangit remote add heroku git@newgitpathfromcontrolpanel

Git hakkında daha fazla bilgi edinmek için bu kitabı tavsiye ederim


Bir uzaktan kumandanın URL'sini git remote set-url <remote-name> <new-url>(Git 1.7.0 ve üstü) ile veya git config remote.<remote-name>.url <new-url>veya düzenleyerek .git/config(muhtemelen git config -eGit 1.6.3 ve sonrasında) güncelleyebilirsiniz.
Chris Johnsen

3
bu çok çok yardımcı oldu. Teşekkürler
Diego Urenia

43

BÖLÜM 1: "Git nereye basılacağını nasıl biliyor?"

Yukarıda belirtilen komutu çalıştırmadan önce:

$ git push heroku master

Her zaman uygulanacak birkaç adım vardır: Git ve Heroku'yu kurmak, yerel bir Git deposu oluşturmak, heroku'ya kaydolmak, komut satırı aracılığıyla heroku'da oturum açmak, barındırma noktasına heroku tanıtıcısı oluşturmak ( BÖLÜM 2'de açıklanmıştır )

1. Yerel bir Git deposu:

    $ git init
    Initialized empty Git repository in .git/
    $ git add .
    $ git commit -m "my first commit"
    Created initial commit 5df2d09: my first commit
     44 files changed, 8393 insertions(+), 0 deletions(-)
     create mode 100644 README
     create mode 100644 Procfile
     create mode 100644 app/controllers/source_file
    ...

2. Heroku'ya kayıt olun (ed) ve komut satırı aracılığıyla oturum açın:

$ heroku login
Enter your Heroku credentials.
Email: user@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

Yani çalıştırarak $ git push heroku masterkodu / uygulamayı Heroku'ya itmiş oldunuz.


BÖLÜM 2: Peki, heroku ve usta neyi gösterir?

Bu, Heroku'dan daha çok Git sorusudur - Heroku, dağıtım için Git'e (Dağıtılmış Sürüm Kontrol Sistemi) bağlı olan bir barındırma platformudur.

"İtme" nin temel kavramı, yerel olarak (çalışan makinemizde) başka bir yere, bu durumda uzak bir depoya (uzak makine) sahip olduğumuz bir şeyi (dosya, uygulama, ..) itmektir.

Git'te 'push' kullanmadan önce, uzak bir depoya (Tam URL) referans olarak hareket eden bir uzak (tutamaç) oluşturuyoruz, bunu aşağıdaki komutu kullanarak yapıyoruz:

$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>

'Push' komutunun temel yapısı şudur:

$ git push <remote-name> <branch>

Yani $ git push heroku masteraslında kodunuzu / uygulamanızı / dosyanızı (bazı yerel Git deposundan) uzak bir repo 'heroku'ya itiyorsunuz.

bu 'heroku' uzaktan kumandasının ne zaman oluşturulduğunu merak ediyorum, $ heroku create'i çalıştırdığınızda eklendi

$ heroku create
Creating stark-fog-398... done, stack is cedar
http://stark-fog-398.herokuapp.com/ | git@heroku.com:stark-fog-398.git
Git remote heroku added

Son satır olan " Git uzak heroku eklendi " ye dikkat edin.

daha net hale getirmek için, işte tüm uzaktan kumandaları kontrol etmek / çıkarmak için bir Git komutu: $ git remote -v, aşağıdakine benzer bir şey gösterecek

$ git remote -v
heroku     git@heroku.com:somerepo.git (fetch)
heroku     git@heroku.com:somerepo.git (push)

Dolayısıyla, aşağıdaki komutun bir yerde (örtük olarak) çalıştırıldığını varsayabiliriz, $ heroku oluşturduğunuzda , dolayısıyla heroku uzaktan kumandasını bazı heroku repolarına (url) *

$ git remote add heroku git@heroku.com:somerepo.git

12

Heroku, heroku cevherinin bir parçası olarak itmeye yardımcı olmak için gereklidir ve usta, basitçe ittiğiniz git daldır. Git, bir heroku uygulaması oluşturduğunuz için, yazarak görebileceğiniz push otomatik olarak kurulduğu için nereye basılacağını bilir.

git remote -v

Değiştirmeniz gerekirse, ile kaldırın git remote rm herokuve ardından yeni uygulamanızı ekleyin.git remote add heroku git@heroku.com:your-application-15.git


uzak dalın normalde ittiğiniz dalla aynı adla oluşturulacağını unutmayın . Yine de bu değiştirilebilir (git push heroku master: mymaster örn. Veya confgi dosyası aracılığıyla)
sehe

2
Bu cevap doğru değil. herokuuzaktan kumandanın adıdır ve heroku cevherinden tamamen bağımsızdır.
jergason


1

Ben de senin gibi ben de git ve heroku'nun bu nezaketini anlamakta zorlandım ve kafam karıştı. Ama şimdi sorunuzu kısaca cevaplayabilmek için biraz netliğe sahibim.

Proje dizininizde git kurulumuna sahip olduğunuzu varsayarsak. Proje klasörünüzde "config" adlı bir dosya içeren ve uzaktan kumandalarla ilgili tüm bilgileri içeren bir .git gizli klasör var.

Uzaktan kumandalar; origin, heroku, staging, prod vb. Gibi ayrı ayrı adlandırılan bireysel depolarınızdır.

Komutunuzda heroku, heroku projesiyle eşleştirdiğiniz depoyu ifade eder. Yapılandırma dosyasını açın, URL'yi göreceksiniz.

Koştuğun zaman

git push heroku master

git'e mevcut kaynak deponuzun ana dalını heroku deposunun ana dalına göndermesini söylüyorsunuz

Geri kalan tüm detaylar zaten diğer cevaplarda paylaşılıyor, bu yüzden tekrarlamak istemeyin. Yani bu, anladığım kadarıyla kısa bir cevap. Umarım yardımcı olur.


0

ama bastırırsam, yine de herokuyu denemeye iter ... bunun yerine gerçek şeyi zorlamanın bir yolu var mı?

Heroku'nun ilgini çekebileceğin cevabı buldum:

https://dashboard.heroku.com/apps/NAMEOFYOURAPP/deploy/heroku-git

$ cd my-project/
$ git init
$ heroku git:remote -a nameofyourapp

$ git add .
$ git commit -am "make it better"
$ git push heroku master

Bu şekilde, heroku nereye itileceğini bilecek!

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.