2012-06-08 19 views
7

Używam Heroku i mam aplikację Rails, która jest stabilna (produkcja env), więc chciałem stworzyć coś nowego, gdzie mogę mieć zapewnienie jakości, gdzie mogę zobaczyć, jak zmiany będą działać na Heroku (a także agregujące ulepszenia wydań) bez ciągłego przesuwania do mojej aplikacji produkcyjnej.Git Błędy podczas wysyłania Heroku

Zrobiłem więc nową aplikację Heroku, a także utworzyłem nowy oddział lokalnie (dev). Moją intencją było scalenie dev'a z mistrzem lokalnie po tym, jak przetestowałem zmianę w mojej nowej aplikacji Heroku QA, a następnie popchnęło do produkcji Heroku z mojego głównego oddziału.

Moje podejście może być złe z moim krajobrazem, jestem nowicjuszem, więc to było tylko moje najlepsze przypuszczenie, jak to zrobić.

Ale kiedy pchnąłem moją gałąź dev do mojej nowej aplikacji QA, zadziałało to, aby przepchnąć do gałęzi dev aplikacji QA, ale nie do mistrza. Nie mogłem więc zobaczyć (i przetestować) moich zmian w nowej aplikacji kontroli jakości. Wydaje się, że mówi mi, że mogę wcisnąć tylko oddział główny kapitanowi mojej aplikacji QA, bo wyciągnął już i wszystko już było up-to-date, ale otrzymuję ten błąd:

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 Ktoś pomóż mi zrozumieć, co robię źle - czy to w moim otoczeniu, czy z Git? Dziękuję Ci.

+0

Pytasz o Heroku, ale twój komunikat o błędzie mówi Github. Upewnij się, że docierasz we właściwe miejsce. – matt

Odpowiedz

20

Aplikacje Heroku działają tylko w gałęzi głównej repozytorium aplikacji (lokalnie w Heroku). Jeśli chcesz wdrożyć gałąź do Heroku, która nie jest główną gałęzią lokalnego repo, musisz ją podać. W twoim przypadku byłoby to coś w stylu: git push qa-remote dev:master (zastąp qa-remote rzeczywistą nazwą pilota w twojej aplikacji QA), co oznacza, że ​​mój lokalny oddział dev jest przekazywany do gałęzi master na qa-remote.

Kiedy naciskasz tak po raz pierwszy, najprawdopodobniej będziesz musiał dodać flagę -f, aby wymusić push (non-fast-forward). Następnie powinieneś być w stanie naciskać bez flagi -f, o ile twój lokalny oddział jest aktualny.

+0

dokładnie to, czego szukałem, dzięki! – yellowreign

22

Spróbuj przesuwać za pomocą opcji -ff (fast-forward): git push heroku master -ff (zastąp nazwę heroku aktualną nazwą pilota heroku).

+1

Wygląda na to, że musi być lepszy sposób. Ponieważ wielu programistów pracuje nad aplikacją, jeśli jest lepsza konfiguracja lub inny sposób na zrobienie tego niż szybkie przekazywanie, myślę, że byłoby lepiej. – yellowreign

Powiązane problemy