2011-08-01 11 views
25

Wciąż dostaję następujące niepowodzeniem z Heroku + git ...Wdrażanie do Heroku z git staje się coraz odrzucone z powodu szybko do przodu

$ 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. 

pomysłów, co robię źle lub powinien robić inaczej pozwolić na pchanie bez konieczności naciskania?

Dzięki

Odpowiedz

81

Po prostu wymuszaj zatwierdzenie za każdym razem, gdy naciskasz, a ono będzie je naciskać, nawet jeśli istnieją szybkie zatwierdzenia. Robimy to w naszym rozwoju serwera Heroku przez cały czas, ponieważ wszyscy naciskają różne poprawki (niektóre z nich są dalej od innych).

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

nie używam jammit do wdrażania, ale prawdopodobnie można uciec z siła pchania, a następnie uruchamiając zadanie jammit sekund. Lub sprawdź i zobacz, czy jammit obsługuje jakąś flagę wymuszania push.

+0

ta odpowiedź powinna zostać przyjęta. – jpwynn

1

Problem polega na tym, że zmiany zostały już popychany swój popełnić jest za tymi nowszymi pchnięć. Zakładam, że masz już gałąź master i gałąź z funkcjami, powiedzmy, że nazywa się my_feature. Możesz to zrobić i być w porządku:

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 

Powinieneś pamiętać o przeprowadzeniu wszelkich testów, które musisz upewnić się, że wszystko jest w porządku.

+0

Dzięki za to, ale teraz, ponieważ jesteśmy pre = launch, wszystko jest w gałęzi głównej. Propozycje? – AnApprentice

+0

$ git checkout master Już na "master" Twój oddział wyprzedza "origin/master" przez 4 commitów. – AnApprentice

+0

origin/master to nie to samo co master. origin/master to zdalna gałąź, która po prostu "git pull" przeciąga zmiany do, a następnie łączy je z masterem ("git fetch" po prostu ściąga zmiany do origin/master, a następnie możesz scalić ręcznie). Tak więc twoja główna gałąź wyprzedza to, co zostało ostatnio rozebrane, więc idź dalej i "git pull". Prawdopodobnie będziesz mieć pewne konflikty i jeśli wszystko będzie dobrze, po prostu pchnij! Nie musisz się ponownie opierać na bazie, jeśli jesteś już na lokalnym mistrzu. – MrDanA

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

Wymuś to! Zamień REMOTE na swoją nazwę pilota heroku (git remote -v, aby wyświetlić wszystkie piloty). Zamień BRANCH na gałąź, którą chcesz wypchnąć, lub po prostu wstaw "master" dla gałęzi głównej.

+1

Myślę, że masz na myśli "git remote -v", aby wyświetlić wszystkie piloty. –

+0

tak dziękuję za sprawdzenie pisowni – dsmithco

Powiązane problemy