2009-12-01 21 views
10

Ok, entonces tengo un gran proyecto github en el que no se supone que debo unir mi pequeña rama Stacia. Sin embargo, parece que Heroku solo toma al maestro en serio. Parece que empujé mi rama, pero por ejemplo si solo tengo mi rama, incluso actúa como si no hubiera código en el servidor. Ni siquiera puedo instalar mis gemas porque el archivo .gems está en mi sucursal.heroku usando la rama git es confuso!

Básicamente, ni siquiera quiero que Heroku sepa que hay un maestro. Solo quiero usar mi rama Stacia de prueba. Pero sigue ignorando mi rama local. ¿Hay alguna forma de hacer esto? Y de nuevo, no quiero sobrescribir nada en el repositorio principal de Github (¡eeek!), Pero estaría bien, probablemente, si tuviera tanto master como mi branch en heroku y los fusionara allí.

Soy un principiante total de git (en windows no menos) así que por favor tengan paciencia conmigo.

Respuesta

2

El primer paso es asegurarse de que tiene rebase su sucursal local en la parte superior de su maestro (Supongamos que se encuentra en su repo 'mainGitHubRepo')

git fetch mainGitHubRepo master 
git checkout -b mainGitHubMaster mainGitHubRepo/master 

A continuación, volver a su oficina y reproducir en la parte superior de mainGitHubMaster:

git checkout Stacia 
git rebase mainGitHubMaster 

Como georgebrock menciona en el comentario, usted no tiene que crear la rama local intermedia mainGitHubMaster: puede rebasar directamente en la parte superior de la rama de obtención de información.

git checkout Stacia 
git rebase maingithubrepo/master 

Después de eso, puede llevar a su branch to your GitHub fork, y luego hacer un pull request.

para empujar una rama local a una distancia establecida, sólo hay que utilizar:
git push REMOTENAME BRANCHNAME.
Si no desea utilizar el mismo nombre en la rama remota, puede usar:
git push REMOTENAME LOCALBRANCHNAME:REMOTEBRANCHNAME.

(que es lo que David Dollar menciones en his answer: git push heroku yourbranch:master)

Nota: si usted tiene su propio tenedor en GitHub, se puede trabajar directamente en el 'maestro' para este tenedor, lo que significa que su solicitud de extracción vendría de una rama 'maestra', mejorando sus posibilidades de ser considerado.
Pero el proceso antes mencionado sigue siendo válido: su solicitud de extracción debe resultar en fusiones triviales para el que integrará sus cambios, de ahí el paso de rebase que se realizará localmente.

+0

Puede saltar un paso en este proceso por el rebase en la rama de seguimiento a distancia sin necesidad de crear una sucursal local: 'git fetch maingithubrepo ; stacia de pago de git rebase maingithubrepo/master' – georgebrock

+0

@georgebrock buen punto, lo he incluido en la respuesta para más visibilidad – VonC

58

Si usted quiere empujar una rama diferente a Heroku se puede hacer algo como

git push heroku yourbranch:master 
+13

Esta debería ser la respuesta aceptada. –

+0

Funcionó perfectamente, ¡gracias! – Jim