“ git push heroku master” รู้ได้อย่างไรว่าจะส่งไปที่ใดและจะส่งไปยัง repo อื่นอย่างไร


92

เมื่อกดไปยังที่เก็บที่โฮสต์บน Heroku ต้องดำเนินการคำสั่งต่อไปนี้:

git push heroku master

ทำอะไรherokuและmasterระบุในคำสั่งนี้? git รู้ได้อย่างไรว่าจะส่งไปที่ใด (เส้นทางคอมไพล์)

นอกจากนี้ฉันไม่รู้ว่าฉันสามารถใช้heroku renameเพื่อเปลี่ยนชื่อแอพได้ดังนั้นก่อนหน้านี้บอกว่าฉันใช้ชื่อแอพ trytryheroku และตอนนี้ฉันใช้heroku create real-thingแต่ถ้าฉันดันมันก็ยังดันไปที่ trytryheroku ... มีวิธีผลักไปที่ ของจริงแทน?

คำตอบ:


107

ส่วน 'heroku' คือชื่อของรีโมตที่คุณตั้งค่าไว้ - เมื่อคุณสร้างแอป heroku ในครั้งแรกที่สร้างการโทรระยะไกล git 'heroku' ชี้ไปที่แอปพลิเคชันของคุณ - หากคุณพิมพ์ 'git remote' ในโครงการของคุณ จะแสดงจุดสิ้นสุดระยะไกล ไม่มีอะไรล็อคคุณให้ใช้ 'heroku' เป็นชื่อของรีโมต - หากคุณมีหลายสภาพแวดล้อมสำหรับแอปพลิเคชันของคุณคุณอาจมีรีโมตที่มีชื่อว่า production หรือ staging เป็นต้น

ส่วน 'master' คือสาขาในพื้นที่ที่คุณต้องการส่งไปยังรีโมต หากคุณพัฒนาในสาขาคุณลักษณะเช่นชื่อ 'myfeature' และคุณต้องการปรับใช้กับ heroku คุณจะต้องทำ

git push heroku myfeature:master

เพิ่มเติม: อาจารย์ที่นี่กำลังบอกว่าผลักดันmyfeatureสาขาในพื้นที่ของฉันไปยังmasterสาขาบนรีโมท - หมายเหตุ: heroku สามารถปรับใช้จากสาขาหลัก

หากคุณเปลี่ยนชื่อแอปพลิเคชัน heroku git remote url จะเปลี่ยน - ทำสิ่งgit remote -v ที่จะแสดงให้คุณเห็นว่า git repo ที่แอปของคุณใช้อยู่คุณอาจจะต้องลบต้นกำเนิด heroku เก่าของคุณและเพิ่มใหม่git remote rm herokuจากนั้นgit remote add heroku git@newgitpathfromcontrolpanel

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Git ฉันขอแนะนำหนังสือเล่มนี้


คุณสามารถอัปเดต URL ของรีโมตด้วยgit remote set-url <remote-name> <new-url>(Git 1.7.0 ขึ้นไป) หรือgit config remote.<remote-name>.url <new-url>หรือโดยการแก้ไข.git/config(อาจเป็นไปได้git config -eใน Git 1.6.3 และใหม่กว่า)
Chris Johnsen

3
นั่นเป็นประโยชน์มาก ขอบคุณ
Diego Urenia

43

ตอนที่ 1: "git รู้ได้อย่างไรว่าจะส่งไปที่ใด"

ก่อนดำเนินการคำสั่งดังกล่าวข้างต้น:

$ git push heroku master

มีขั้นตอนอื่น ๆ ในการดำเนินการอยู่เสมอ: การติดตั้ง Git และ Heroku, การสร้าง Git repo ในเครื่อง, การสมัครใช้งาน heroku, เข้าสู่ระบบ heroku ผ่านบรรทัดคำสั่ง, การสร้างที่จับ heroku ไปยังจุดโฮสต์ ( อธิบายในส่วนที่ 2 )

1. ที่เก็บ Git ในเครื่อง:

    $ 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. ลงทะเบียน (ed) สำหรับ Heroku และเข้าสู่ระบบผ่านบรรทัดคำสั่ง:

$ 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

ดังนั้นเมื่อเรียกใช้$ git push heroku masterคุณได้ผลักรหัส / แอปไปที่ Heroku


ตอนที่ 2: แต่herokuกับmasterบ่งบอกอะไร?

เป็นคำถามเกี่ยวกับ Git มากกว่า Heroku - Heroku เป็นแพลตฟอร์มโฮสติ้งซึ่งขึ้นอยู่กับ Git (Distributed Version Control System) สำหรับการปรับใช้

แนวคิดพื้นฐานของ 'push' คือการผลักดันบางสิ่ง (ไฟล์, แอพ, .. ) ที่เรามีในเครื่อง (ในเครื่องที่ทำงานของเรา) ไปยังที่อื่นในกรณีนี้ไปยังที่เก็บระยะไกล (เครื่องระยะไกล)

ใน Git ก่อนที่จะใช้ 'push' เราจะสร้าง remote (handle) ซึ่งทำหน้าที่อ้างอิงไปยังที่เก็บระยะไกล (Complete URL) เราทำได้โดยใช้คำสั่งต่อไปนี้

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

โครงสร้างพื้นฐานของคำสั่ง 'push' คือ:

$ git push <remote-name> <branch>

ดังนั้นการส่ง$ git push heroku masterรหัส / แอป / ไฟล์ของคุณ (จาก Git repo ในเครื่อง) ไปยัง 'heroku' ของ repo

สงสัยว่ารีโมต 'heroku' นี้ถูกสร้างขึ้นเมื่อใดจึงมีการเพิ่มเมื่อคุณดำเนินการสร้าง $ heroku

$ 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

โปรดสังเกตบรรทัดสุดท้าย " Git remote heroku added "

เพื่อให้ชัดเจนยิ่งขึ้นนี่คือคำสั่ง Git เพื่อตรวจสอบ / เอาต์พุตรีโมททั้งหมด: $ git remote -v จะแสดงสิ่งที่คล้ายกับต่อไปนี้

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

ดังนั้นเราจึงสามารถสรุปได้ว่าคำสั่งต่อไปนี้ถูกเรียกใช้งาน (โดยปริยาย) ที่ไหนสักแห่งเมื่อคุณสร้าง $ herokuดังนั้นการสร้างรีโมต heroku ให้กับ repo heroku (url) *

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

12

จำเป็นต้องใช้ heroku เป็นส่วนหนึ่งของอัญมณี heroku เพื่อช่วยในการผลักดันและ master เป็นเพียงสาขา git ที่คุณกำลังผลักดัน คอมไพล์รู้ว่าจะพุชไปที่ไหนเพราะคุณสร้างแอปพลิเคชัน heroku การพุชจะถูกตั้งค่าโดยอัตโนมัติซึ่งคุณสามารถดูได้โดยการพิมพ์

git remote -v

หากคุณต้องการเปลี่ยนที่ลบออกด้วยgit remote rm herokuแล้วเพิ่มแอปพลิเคชั่นใหม่ของ yoru ด้วยgit remote add heroku git@heroku.com:your-application-15.git


โปรดทราบว่าโดยปกติสาขาระยะไกลจะถูกสร้างขึ้นโดยใช้ชื่อเดียวกับสาขาที่คุณกำลังผลักดัน สิ่งนี้สามารถเปลี่ยนแปลงได้ (git push heroku master: mymaster เช่นหรือผ่านไฟล์ confgi)
sehe

2
คำตอบนี้ไม่เป็นความจริง herokuเป็นชื่อของรีโมทและไม่ได้เชื่อมต่อกับอัญมณี heroku โดยสิ้นเชิง
jergason


1

เช่นเดียวกับคุณฉันก็พยายามที่จะเข้าใจความสำคัญของ git และ heroku และฉันก็สับสนเช่นกัน แต่ตอนนี้ฉันมีความชัดเจนเล็กน้อยที่จะสามารถตอบคำถามของคุณโดยย่อได้

สมมติว่าคุณมีการตั้งค่าคอมไพล์ในไดเรกทอรีโครงการของคุณ มีโฟลเดอร์. git ที่ซ่อนอยู่ในโฟลเดอร์โครงการของคุณซึ่งมีไฟล์ชื่อ "config" ซึ่งเก็บข้อมูลทั้งหมดเกี่ยวกับรีโมท

รีโมทคือที่เก็บของคุณซึ่งตั้งชื่อแยกกันเช่นต้นกำเนิด, ฮีโร่, การแสดงละคร, แยง ฯลฯ

ในคำสั่งของคุณ heroku หมายถึงพื้นที่เก็บข้อมูลที่คุณได้จับคู่กับโครงการ heroku เปิดไฟล์ config คุณจะเห็น URL

เมื่อคุณเรียกใช้

git push heroku master

คุณกำลังบอกให้คอมไพล์ส่งสาขาหลักของที่เก็บต้นทางปัจจุบันของคุณไปยังสาขาหลักของที่เก็บ heroku

ส่วนที่เหลือรายละเอียดทั้งหมดถูกแบ่งปันในคำตอบอื่น ๆ แล้วดังนั้นอย่าต้องการทำซ้ำ นี่เป็นเพียงคำตอบสั้น ๆ ตามความเข้าใจของฉัน หวังว่าจะช่วยได้


0

แต่ถ้าฉันดันมันก็ยังดันเป็น trytryheroku ... มีวิธีผลักไปที่ของจริงแทนไหม?

ฉันพบคำตอบที่คุณอาจสนใจที่ heroku's:

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

แบบนั้น heroku จะรู้ว่าดันไปไหน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.