Bagaimana “git push heroku master” mengetahui ke mana harus mendorong dan bagaimana cara mendorong ke repo yang berbeda?

92

Saat mendorong ke repositori yang dihosting di Heroku, seseorang harus menjalankan perintah berikut:

git push heroku master

Apa yang dilakukan herokudan masterdiindikasikan dalam perintah ini? Bagaimana git tahu ke mana harus mendorong? (jalur git)

Juga, saya tidak tahu saya dapat menggunakan heroku renameuntuk mengganti nama aplikasi, jadi sebelumnya, katakanlah saya menggunakan nama aplikasi trytryheroku dan sekarang saya gunakan heroku create real-thingtetapi jika saya mendorong, itu masih mendorong untuk mencoba mencoba ... apakah ada cara untuk mendorong ke hal yang nyata?

Sarah Wong
sumber

Jawaban:

107

Bagian 'heroku' adalah nama remote yang telah Anda siapkan - saat Anda membuat aplikasi heroku untuk pertama kali, ini membuat panggilan jarak jauh git 'heroku' yang mengarah ke aplikasi Anda - jika Anda mengetik 'git remote' dalam proyek Anda, itu akan menunjukkan titik akhir jarak jauh. Tidak ada yang mengunci Anda untuk menggunakan 'heroku' sebagai nama remote - jika Anda memiliki banyak lingkungan untuk aplikasi Anda, Anda mungkin memiliki remote bernama produksi atau pementasan misalnya.

Bagian 'master' adalah cabang lokal yang ingin Anda dorong ke remote. Jika Anda mengembangkan di cabang fitur misalnya bernama 'myfeature' dan Anda ingin menerapkannya ke heroku, Anda akan melakukannya;

git push heroku myfeature:master

tambahan: master di sini mengatakan dorong myfeaturecabang lokal saya ke mastercabang di remote - catatan: heroku hanya dapat menyebarkan dari cabang master.

Jika Anda mengganti nama aplikasi, url jarak jauh heroku git akan berubah - lakukan git remote -v yang akan menunjukkan repo git yang digunakan aplikasi Anda, Anda mungkin perlu menghapus heroku asal lama dan menambahkan yang baru, git remote rm herokulalugit remote add heroku git@newgitpathfromcontrolpanel

Untuk mempelajari lebih lanjut tentang Git, saya akan merekomendasikan buku ini

John Beynon
sumber
Anda dapat memperbarui URL jarak jauh dengan git remote set-url <remote-name> <new-url>(Git 1.7.0 dan yang lebih baru), atau git config remote.<remote-name>.url <new-url>, atau dengan mengedit .git/config(mungkin melalui git config -edi Git 1.6.3 dan yang lebih baru).
Chris Johnsen
3
itu sangat membantu. Terima kasih
Diego Urenia
43

BAGIAN 1: "Bagaimana git tahu ke mana harus mendorong?"

Sebelum menjalankan perintah yang disebutkan di atas:

$ git push heroku master

Selalu ada beberapa langkah lain untuk dijalankan: Menginstal Git dan Heroku, membuat repo Git lokal, mendaftar ke heroku, masuk heroku melalui baris perintah, membuat pegangan heroku ke titik hosting ( dijelaskan di BAGIAN 2 )

1. Repositori Git lokal:

    $ 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. Mendaftar ke Heroku dan masuk melalui baris perintah:

$ heroku login
Enter your Heroku credentials.
Email: [email protected]
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

Jadi dengan menjalankan $ git push heroku masterAnda telah mendorong kode / aplikasi ke Heroku.


BAGIAN 2: Tapi apa yang ditunjukkan oleh heroku dan master ?

Ini lebih merupakan pertanyaan Git daripada Heroku - Heroku adalah platform hosting, yang bergantung pada Git (Sistem Kontrol Versi Terdistribusi) untuk penerapan.

Konsep dasar dari 'push' adalah mendorong sesuatu (file, app, ..) yang kita miliki secara lokal (di mesin yang bekerja) ke tempat lain, dalam hal ini ke repositori jarak jauh (mesin jarak jauh).

Di Git sebelum menggunakan 'push' kami membuat remote (pegangan) yang bertindak sebagai referensi ke repositori jarak jauh (URL Lengkap), kami melakukannya dengan menggunakan perintah berikut:

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

Struktur dasar dari perintah 'push' adalah:

$ git push <remote-name> <branch>

Jadi $ git push heroku mastersebenarnya mendorong kode / aplikasi / file Anda (dari beberapa repo Git lokal) ke repo 'heroku' jarak jauh.

bertanya-tanya kapan remote 'heroku' ini dibuat, itu ditambahkan ketika Anda mengeksekusi $ heroku create

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

Perhatikan baris terakhir " Git remote heroku added ".

untuk membuatnya lebih jelas, berikut adalah perintah Git untuk memeriksa / mengeluarkan semua remote: $ git remote -v akan menampilkan sesuatu yang mirip dengan berikut ini

$ git remote -v
heroku     [email protected]:somerepo.git (fetch)
heroku     [email protected]:somerepo.git (push)

Jadi kita dapat berasumsi bahwa perintah berikut dijalankan (secara implisit) di suatu tempat, ketika Anda membuat $ heroku , sehingga membuat remote heroku ke beberapa repo heroku (url) *

$ git remote add heroku [email protected]:somerepo.git
Nabeel Ahmed
sumber
12

heroku diperlukan sebagai bagian dari permata heroku untuk membantu mendorong, dan master hanyalah cabang git yang Anda dorong. Git tahu ke mana harus mendorong karena Anda membuat aplikasi heroku, push secara otomatis diatur, yang dapat Anda lihat dengan mengetik

git remote -v

jika Anda perlu mengubahnya, hapus dengan git remote rm herokudan kemudian tambahkan aplikasi baru Anda dengangit remote add heroku [email protected]:your-application-15.git

Will Ayd
sumber
perhatikan bahwa cabang jarak jauh biasanya akan dibuat dengan nama yang sama dengan cabang yang Anda dorong. Ini dapat diubah, meskipun (git push heroku master: mymaster misalnya, atau melalui file confgi)
lihat
2
Jawaban ini tidak benar. herokuadalah nama remote, dan sama sekali tidak terhubung dengan permata heroku.
jergason
1

Sama seperti Anda, saya juga berjuang untuk memahami seluk-beluk git dan heroku ini dan saya juga bingung. Tapi sekarang saya punya sedikit kejelasan untuk bisa menjawab pertanyaan Anda secara singkat.

Dengan asumsi Anda memiliki pengaturan git di direktori proyek Anda. Terdapat folder tersembunyi .git di folder proyek Anda yang berisi file bernama "config" yang menyimpan semua informasi tentang remote.

Remote adalah repositori individual Anda yang diberi nama secara individual seperti origin, heroku, staging, prod, dll.

Dalam perintah Anda, heroku adalah singkatan dari repositori yang telah Anda petakan ke proyek heroku. Buka file config Anda akan melihat URL-nya.

Saat kamu lari

git push heroku master

Anda memberi tahu git untuk mendorong cabang master repositori asal Anda saat ini ke cabang master repositori heroku

Selebihnya semua detail sudah dibagikan di jawaban lain jadi jangan mau mengulang. Jadi ini hanya jawaban singkat menurut pemahaman saya. Semoga membantu.

Sameer
sumber
0

tetapi jika saya mendorong, itu masih mendorong untuk trytryheroku ... apakah ada cara untuk mendorong ke hal yang nyata?

Saya menemukan jawaban yang mungkin membuat Anda tertarik dengan heroku:

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

Dengan begitu, heroku akan tahu kemana harus mendorong!

iair
sumber