Clon local de un tenedor github: ¿Cómo mantengo las cosas sincronizadas?

1) En github, bifurqué un repository para enviar una request de extracción.

2) Luego cloné el repository en mi computadora local.

3) Luego creé una twig e hice algunos cambios a uno de los files en el repository.

4) Entonces pensé que necesitaba sincronizar mi repository local con el repository original (el que bifurqué) antes de enviar mi request de extracción, así que probé:

$ git remote -v origin https://github.com/7stud/sinatra.git (fetch) origin https://github.com/7stud/sinatra.git (push) upstream https://github.com/sinatra/sinatra.github.com.git (fetch) upstream https://github.com/sinatra/sinatra.github.com.git (push) $ git fetch upstream 

… pero recibí errores que decían que había discrepancias para muchos files. Hice algunas búsquedas en Google sobre eso, pero no iba a entrar en todos los files y empezar a cambiar las cosas a mano, así que me salté la synchronization.

5) Pude enviar mis cambios a mi repository github y luego enviar mi request de extracción.

6) Se aceptó la request de extracción, entonces pensé que debería fusionar mi twig local en mi maestro local, y tal vez intentar sincronizar de nuevo.

7) Pero ni siquiera puedo cambiar a mi sucursal local sin get un error:

 $ git branch improve_readme * master $ git checkout improve_readme .gitignore: needs merge Gemfile: needs merge README.md: needs merge Rakefile: needs merge error: you need to resolve your current index first 

¿Qué debo hacer para "resolver primero mi índice actual"? Estaba pensando en enviar otra request de extracción. Si lo más fácil es eliminar mi tenedor en gihub y eliminar mi clon local, luego volver a tejer y volver a clonar, puedo hacerlo.

Solo intenté lo siguiente de nuevo:

 $ git fetch upstream $ 

y esta vez no obtuve errores, pero tampoco obtuve ningún resultado como este:

 # remote: Counting objects: 75, done. # remote: Compressing objects: 100% (53/53), done. # remote: Total 62 (delta 27), reused 44 (delta 9) # Unpacking objects: 100% (62/62), done. # From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY 

Y todavía no puedo cambiar de twig:

 $ git checkout improve_readme .gitignore: needs merge Gemfile: needs merge README.md: needs merge Rakefile: needs merge error: you need to resolve your current index first 

Aquí hay más información:

 $ git status # On branch master # Changes to be committed: # # new file: CNAME # new file: Gemfile.lock # new file: Thorfile # new file: _config.yml # new file: _includes/README.de.html # new file: _includes/README.es.html # new file: _includes/README.fr.html # new file: _includes/README.html # new file: _includes/README.hu.html # new file: _includes/README.ja.html # new file: _includes/README.ko.html # new file: _includes/README.pt-br.html # new file: _includes/README.pt-pt.html # new file: _includes/README.ru.html # new file: _includes/README.zh.html # new file: _includes/sinatra-config-file.html # new file: _includes/sinatra-content-for.html # new file: _includes/sinatra-cookies.html # new file: _includes/sinatra-decompile.html # new file: _includes/sinatra-extension.html # new file: _includes/sinatra-json.html # new file: _includes/sinatra-link-header.html # new file: _includes/sinatra-multi-route.html # new file: _includes/sinatra-namespace.html # new file: _includes/sinatra-reloader.html # new file: _includes/sinatra-respond-with.html # new file: _includes/sinatra-streaming.html # new file: _layouts/contrib.html # new file: _layouts/default.html # new file: _layouts/post.html # new file: _posts/2009-01-18-sinatra-0.9.0.markdown # new file: _posts/2009-01-29-we-have-a-faq-now.markdown # new file: _posts/2011-03-03-blog-revived.markdown # new file: _posts/2011-03-03-sinatra-1.2.0.markdown # new file: _posts/2011-07-21-sinatra-loves-dancer.markdown # new file: _posts/2011-09-30-sinatra-1.3.0.markdown # new file: _posts/2013-03-15-sinatra-1.4.0.markdown # new file: about.markdown # new file: api/index.html # new file: blog.html # new file: book.html # new file: changes.html # new file: configuration.markdown # new file: contrib/config_file.html # new file: contrib/content_for.html # new file: contrib/cookies.markdown # new file: contrib/decompile.html # new file: contrib/extension.markdown # new file: contrib/index.markdown # new file: contrib/json.markdown # new file: contrib/link_header.markdown # new file: contrib/multi_route.html # new file: contrib/namespace.markdown # new file: contrib/reloader.markdown # new file: contrib/respond_with.markdown # new file: contrib/streaming.markdown # new file: contributing.markdown # new file: css/legend.css # new file: css/print.css # new file: css/syntax.css # new file: documentation.markdown # new file: example.markdown # new file: extensions-wild.markdown # new file: extensions.markdown # new file: faq.markdown # new file: feed.xml # new file: images/favicon.ico # new file: images/legend.gif # new file: images/link-out.gif # new file: images/logo.png # new file: index.html # new file: intro-de.html # new file: intro-es.html # new file: intro-fr.html # new file: intro-hu.html # new file: intro-ja.html # new file: intro-ko.html # new file: intro-pt-br.html # new file: intro-pt-pt.html # new file: intro-ru.html # new file: intro-zh.html # new file: intro.html # new file: one-oh-faq.markdown # new file: testing.markdown # new file: wild.markdown # # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both added: .gitignore # both added: Gemfile # both added: README.md # both added: Rakefile # 

Supongo que es por eso que git no me deja cambiar de twig. No entiendo de dónde vinieron esos cambios. De acuerdo a:

https://help.github.com/articles/syncing-a-fork

Obtenga las twigs y sus respectivas confirmaciones desde el repository aguas arriba. Los commits to master se almacenarán en una twig local, upstream / master.

Pero no tengo ninguna twig local llamada upstream / master:

 $ git branch improve_readme * master 

¿Los cambios previos al master se fusionaron automáticamente con mi maestro local?

Hay una herramienta realmente increíble llamada hub . Se engancha a los methods estándar de git con las llamadas de API de Github para hacer cosas como esta súper simples.

Recomiendo leer sobre cómo funciona Git con los controles remotos, pero si quieres una forma fácil de volver a establecer el sinatra / master en tu sucursal, haz lo siguiente:

Por ejemplo:

Yo cloné tu repository:

 git clone https://github.com/7stud/sinatra.git cd sinatra/ 

Abrí una request de extracción en su repository de Sinatra:

 https://github.com/7stud/sinatra/pull/2 

A continuación, utilizo la herramienta hub am para hacer una combinación de la diff descargada:

 git am -3 https://github.com/7stud/sinatra/pull/2 

Básicamente hace todo el trabajo duro para ti.