Làm thế nào để "git push heroku master" biết nơi để đẩy đến và làm thế nào để đẩy đến một repo khác?


92

Khi đẩy đến một kho lưu trữ trên Heroku, người ta phải thực hiện lệnh sau:

git push heroku master

Làm gì herokumasterchỉ ra trong lệnh này? Làm thế nào để git biết nơi để đẩy? (đường dẫn git)

Ngoài ra, tôi không biết mình có thể sử dụng heroku renameđể đổi tên một ứng dụng, vì vậy trước đây, nói rằng tôi đang sử dụng tên ứng dụng trytryheroku và bây giờ tôi sử dụng heroku create real-thingnhưng nếu tôi đẩy, nó vẫn đẩy thành trytryheroku ... có cách nào để đẩy đến điều thực thay thế?

Câu trả lời:


107

Phần 'heroku' là tên của điều khiển từ xa mà bạn đã thiết lập - khi bạn tạo ứng dụng heroku lần đầu tiên, nó sẽ tạo một cuộc gọi từ xa git 'heroku' trỏ vào ứng dụng của bạn - nếu bạn nhập 'git remote' trong dự án của mình sẽ hiển thị cho bạn các điểm cuối từ xa. Không có gì ngăn cản bạn sử dụng 'heroku' làm tên của điều khiển từ xa - nếu bạn có nhiều môi trường cho ứng dụng của mình, bạn có thể có điều khiển từ xa có tên là production hoặc staging chẳng hạn.

Phần 'chủ' là nhánh cục bộ mà bạn muốn đẩy đến điều khiển từ xa. Nếu bạn phát triển trong một nhánh tính năng, ví dụ có tên 'myfeature' và bạn muốn triển khai nó cho heroku, bạn sẽ làm;

git push heroku myfeature:master

phần bổ sung: master ở đây đang nói đẩy myfeaturenhánh cục bộ của tôi vào masternhánh trên điều khiển từ xa - lưu ý: heroku chỉ có thể triển khai từ nhánh chính.

Nếu bạn đổi tên một ứng dụng, url từ xa git của heroku sẽ thay đổi - hãy làm điều git remote -v đó sẽ hiển thị cho bạn repo git mà ứng dụng của bạn đang sử dụng, có thể bạn sẽ cần xóa nguồn gốc heroku cũ của mình và thêm cái mới, git remote rm herokusau đógit remote add heroku git@newgitpathfromcontrolpanel

Để tìm hiểu thêm về Git, tôi muốn giới thiệu cuốn sách này


Bạn có thể cập nhật URL của điều khiển từ xa bằng git remote set-url <remote-name> <new-url>(Git 1.7.0 trở lên) git config remote.<remote-name>.url <new-url>hoặc bằng cách chỉnh sửa .git/config(có thể qua git config -eGit 1.6.3 trở lên).
Chris Johnsen

3
điều đó rất hữu ích. Cảm ơn bạn
Diego Urenia

43

PHẦN 1: "Làm thế nào để git biết đẩy đến đâu?"

Trước khi thực hiện lệnh đã đề cập ở trên:

$ git push heroku master

Luôn có một số bước khác để thực hiện: Cài đặt Git và Heroku, tạo kho lưu trữ Git cục bộ, đăng ký heroku, đăng nhập heroku qua dòng lệnh, tạo tay cầm heroku cho điểm lưu trữ ( giải thích trong PHẦN 2 )

1. Kho lưu trữ Git cục bộ:

    $ 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. Đăng ký (ed) cho Heroku và đăng nhập qua dòng lệnh:

$ 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

Vì vậy, bằng cách chạy, $ git push heroku masterbạn đã đẩy mã / ứng dụng sang Heroku.


PHẦN 2: nhưng herokumaster chỉ ra điều gì?

Đây là câu hỏi về Git nhiều hơn Heroku - Heroku là một nền tảng lưu trữ, phụ thuộc vào Git (Hệ thống kiểm soát phiên bản phân tán) để triển khai.

Khái niệm cơ bản về 'push' là đẩy một số thứ (tệp, ứng dụng, ..) chúng ta có cục bộ (trong máy làm việc của chúng ta) đến một nơi khác, trong trường hợp này là đến một kho lưu trữ từ xa (máy từ xa).

Trong Git trước khi sử dụng 'push', chúng tôi tạo một điều khiển từ xa (xử lý) hoạt động như một tham chiếu đến kho lưu trữ từ xa (URL hoàn chỉnh), chúng tôi làm như vậy bằng cách sử dụng lệnh sau:

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

Cấu trúc cơ bản của lệnh 'push' là:

$ git push <remote-name> <branch>

Vì vậy, $ git push heroku masterthực sự là đẩy mã / ứng dụng / tệp của bạn (từ một số repo Git cục bộ) đến một repo từ xa 'heroku'.

tự hỏi khi nào điều khiển từ xa 'heroku' này được tạo, nó được thêm vào khi bạn thực hiện tạo $ 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

Hãy để ý đến dòng cuối cùng "Đã thêm heroku từ xa vào ".

để làm rõ hơn, đây là lệnh Git để kiểm tra / xuất tất cả các điều khiển từ xa: $ git remote -v sẽ hiển thị một cái gì đó tương tự như sau

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

Vì vậy, chúng tôi có thể giả định rằng lệnh sau đã được thực thi (ngầm) ở đâu đó, khi bạn tạo $ heroku , do đó tạo điều khiển từ xa heroku cho một số đại diện heroku (url) *

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

12

Heroku được yêu cầu như một phần của ngọc heroku để hỗ trợ đẩy, và chủ chỉ đơn giản là nhánh git mà bạn đang đẩy. Git biết cần đẩy đến đâu vì bạn tạo một ứng dụng heroku, quá trình đẩy sẽ tự động được thiết lập, bạn có thể thấy bằng cách gõ

git remote -v

nếu bạn cần thay đổi, hãy xóa nó với git remote rm herokuvà sau đó thêm ứng dụng mới của yoru vớigit remote add heroku git@heroku.com:your-application-15.git


lưu ý rằng nhánh từ xa thường sẽ được tạo bằng tên giống với nhánh bạn đang đẩy. Tuy nhiên, điều này có thể được thay đổi (git push heroku master: mymaster ví dụ: hoặc thông qua tệp confgi)
xem

2
Câu trả lời này là không đúng sự thật. herokulà tên của điều khiển từ xa, và hoàn toàn không được kết nối với đá quý heroku.
jergason


1

Cũng giống như bạn, tôi cũng phải vật lộn để hiểu được những điều khó hiểu của git và heroku và tôi cũng bối rối. Nhưng bây giờ tôi đã có một chút rõ ràng để có thể trả lời câu hỏi của bạn trong ngắn hạn.

Giả sử bạn đã thiết lập git trên thư mục dự án của mình. Tồn tại một thư mục ẩn .git trong thư mục dự án của bạn có chứa tệp có tên "config", tệp này chứa tất cả thông tin về điều khiển từ xa.

Điều khiển từ xa là các kho lưu trữ riêng lẻ của bạn được đặt tên riêng như origin, heroku, staging, prod, v.v.

Trong lệnh của bạn, heroku là viết tắt của kho lưu trữ mà bạn đã ánh xạ tới dự án heroku. Mở tệp cấu hình, bạn sẽ thấy URL.

Khi bạn chạy

git push heroku master

bạn đang yêu cầu git đẩy nhánh chính của kho lưu trữ gốc hiện tại của bạn lên nhánh chính của kho lưu trữ heroku

Phần còn lại tất cả các chi tiết đã được chia sẻ trong các câu trả lời khác nên không muốn lặp lại. Vì vậy, đây chỉ là một câu trả lời ngắn gọn theo hiểu biết của tôi. Hy vọng nó giúp.


0

nhưng nếu tôi đẩy, nó vẫn đẩy đến trytryheroku ... có cách nào để đẩy đến vật thực không?

Tôi đã tìm thấy câu trả lời mà bạn có thể quan tâm tại 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

Bằng cách đó, heroku sẽ biết nơi để đẩy!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.