2011-08-01 51 views
25

tôi tiếp tục nhận được những điều sau thất bại với Heroku + git ...Triển khai để Heroku với git tiếp tục bị từ chối vì nhanh về phía trước

$ heroku jammit:deploy --app XXXXXXXXXXX 
===== Compiling assets...[OK] 
===== Commiting assets...[OK] 
===== Done... 
===== Deploying assets for xxxxx-staging to heroku... 
To [email protected]:XXXXXXXX.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxx-staging.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 
[FAIL] 
===== Done... 
===== Deleting compiled assets...[OK] 
===== Commiting deleted assets...[OK] 
===== Done... 
$ git pull 
Already up-to-date. 

Bất kỳ ý tưởng những gì tôi đang làm sai hoặc nên làm cách khác nhau để cho phép đẩy mà không cần phải đẩy mạnh?

Cảm ơn

Trả lời

81

Chỉ cần thực hiện cam kết mỗi khi bạn đẩy và nó sẽ đẩy nó ngay cả khi có các cam kết chuyển tiếp nhanh. Chúng tôi làm điều này trong máy chủ Heroku phát triển của chúng tôi tất cả các thời gian kể từ khi chúng tôi đang đẩy tất cả các cam kết khác nhau (một số phía sau xa hơn những người khác).

git push -f [email protected]:picasso-staging.git 

Tôi không sử dụng kẹt giấy để triển khai, nhưng bạn có thể tránh được lực đẩy trước và sau đó chạy tác vụ kẹt thứ hai. Hoặc kiểm tra xem liệu nhiễu có hỗ trợ cờ đẩy lực của một số loại hay không.

+0

câu trả lời này phải được chấp nhận. – jpwynn

1

Vấn đề là các thay đổi đã được đẩy và cam kết của bạn nằm sau những lần đẩy mới hơn. Tôi sẽ giả sử bạn có một nhánh chính và nhánh chi tiết của bạn vẫn còn, hãy nói nó được gọi là my_feature. Bạn có thể làm điều này và được quyền:

git checkout master 
git pull 
git checkout my_feature 
git rebase master 
    (you may have to fix some conflicts here, if any are found) 
git checkout master 
git merge my_feature 
git push heroku 

Bạn nên nhớ chạy bất kỳ thử nghiệm nào bạn phải đảm bảo mọi thứ vẫn ổn.

+0

Cảm ơn vì điều này nhưng ngay bây giờ vì chúng tôi đang pre = launch, tất cả đều nằm trên nhánh chính. Gợi ý? – AnApprentice

+0

$ git checkout master Đã bật 'master' Chi nhánh của bạn ở phía trước 'origin/master' bằng 4 cam kết. – AnApprentice

+0

origin/master không giống như master. origin/master là nhánh từ xa khi bạn chỉ thực hiện "git pull", nó sẽ kéo các thay đổi vào, và sau đó kết hợp chúng vào master ("git fetch" chỉ cần kéo các thay đổi vào origin/master và sau đó bạn có thể merge thủ công). Vì vậy, yea, chi nhánh chính của bạn là trước những gì được kéo xuống cuối cùng, do đó, đi trước và 'git kéo'. Có thể bạn sẽ có một số xung đột và sau đó nếu tất cả đều tốt thì hãy đẩy mạnh! Không cần phải rebase sau đó nếu bạn đã ở trên bậc thầy địa phương của bạn. – MrDanA

7
git push -f REMOTE BRANCH:master #or just master 

Buộc nó! Thay thế REMOTE bằng tên từ xa heroku của bạn (git remote -v để xem tất cả điều khiển từ xa). Thay thế CHI NHÁNH bằng chi nhánh bạn muốn đẩy hoặc chỉ cần đặt "chính" cho nhánh chính.

+1

Tôi nghĩ rằng bạn có nghĩa là "git remote -v" để xem tất cả điều khiển từ xa. –

+0

có cảm ơn vì đã kiểm tra chính tả – dsmithco

Các vấn đề liên quan