2012-06-08 28 views
7

Tôi đang sử dụng Heroku và có ứng dụng Rails ổn định (sản xuất env), vì vậy tôi muốn tạo một cái gì đó mới, nơi tôi có thể đảm bảo chất lượng tại nơi tôi có thể thấy các thay đổi sẽ hoạt động như thế nào trên Heroku (cũng như cải tiến tổng hợp cho bản phát hành) mà không phải lúc nào cũng đẩy mạnh ứng dụng sản xuất của tôi.Lỗi Git khi ấn vào Heroku

Vì vậy, những gì tôi đã làm là tạo một ứng dụng Heroku mới và cũng tạo một chi nhánh mới tại địa phương (dev). Ý định của tôi là hợp nhất dev vào master tại địa phương sau khi tôi thử nghiệm sự thay đổi trên ứng dụng Heroku QA mới của tôi, và sau đó đẩy tới sản xuất Heroku từ nhánh chủ của tôi.

Cách tiếp cận của tôi có thể là một điều xấu với cảnh quan của tôi, tôi là người mới, vì vậy đây chỉ là phỏng đoán tốt nhất của tôi về cách thực hiện điều này.

Nhưng khi tôi đẩy chi nhánh nhà phát triển của mình vào ứng dụng QA mới, nó đã hoạt động để đẩy chi nhánh dev của ứng dụng QA, chứ không phải chủ nhân. Vì vậy, tôi không thể nhìn thấy (và kiểm tra) những thay đổi của tôi trên ứng dụng QA mới. Nó dường như được nói với tôi rằng tôi chỉ có thể đẩy chi nhánh tổng thể để chủ nhân của ứng dụng QA của tôi, kể từ khi tôi kéo đã và mọi thứ đều đã được up-to-date, nhưng tôi nhận được lỗi này:

Pushing to [email protected]:foobar/QA.git 
To [email protected]:foobar/QA.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:foobar/QA.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Can ai đó hãy giúp tôi tìm ra những gì tôi đang làm sai - hoặc với môi trường của tôi hoặc với Git? Cảm ơn bạn.

+0

Bạn đang hỏi về Heroku, nhưng thông báo lỗi của bạn cho biết Github. Hãy chắc chắn rằng bạn đang cố gắng đến đúng nơi. – matt

Trả lời

20

Ứng dụng Heroku chỉ chạy khỏi nhánh chính của kho ứng dụng (cục bộ đến Heroku). Nếu bạn muốn triển khai một chi nhánh cho Heroku không phải là nhánh chính của repo cục bộ của bạn, thì bạn cần phải xác định nó. Trong trường hợp của bạn, nó sẽ giống như git push qa-remote dev:master (thay thế qa-remote bằng tên thực tế của điều khiển từ xa sang ứng dụng QA của bạn), nó sẽ đẩy nhánh dev cục bộ của tôi vào nhánh chính trên qa-remote.

Khi bạn đẩy như thế lần đầu tiên, bạn có thể cần phải thêm cờ -f để buộc đẩy (không tiến nhanh). Sau đó, bạn sẽ có thể đẩy mà không có cờ -f, miễn là chi nhánh địa phương của bạn được cập nhật.

+0

chính xác những gì tôi đang tìm kiếm, cảm ơn! – yellowreign

22

Thử đẩy bằng tùy chọn -ff (tua đi nhanh): git push heroku master -ff (thay thế heroku bằng tên thực tế của điều khiển từ xa heroku).

+1

Có vẻ như phải có một cách tốt hơn. Vì nhiều nhà phát triển đang làm việc trên ứng dụng, nếu có thiết lập tốt hơn hoặc cách khác để làm điều đó nhanh hơn, tôi nghĩ điều đó sẽ tốt hơn. – yellowreign