¿Cómo puedo usar Git para actualizar mi directory y otros contenidos?

Tengo un directory como el siguiente:

/var/tmp/main .. plugin1 .... mysource.c .. plugin2 .... mysource.c .. plugin3 .... mysource.c 

Y creé un repository. Después de eso, apliqué el siguiente:

 $ cd /var/tmp/main $ git init $ echo "hello git plz work" >> README $ git add README $ git commit -m 'first commit works' $ git remote add origin git@...../main.git $ git push origin master 

También intenté

 $ git add . $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # (commit or discard the untracked or modified content in submodules) # # modified: folder1 (modified content) # modified: folder2 (modified content) # modified: folder3 (modified content) # modified: folder4 (modified content) # modified: folder5 (modified content) # modified: folder6 (modified content, untracked content) # modified: folder7 (modified content) # modified: library (modified content, untracked content) # no changes added to commit (use "git add" and/or "git commit -a") $ git commit -m 'Suggested by Stack experts' $ git push 

Intenté también .gitignore

 $ cat .gitignore *.[oa] *.pyc *.gcda *.gcno *.la *.lo *.loT *.sw[po] *.tar.* *~ .deps .libs ABOUT-NLS INSTALL Makefile Makefile.in aclocal.m4 autom4te.cache autoregen.sh compile config.guess config.h config.h.in config.log config.rpath config.status config.sub configure depcomp install-sh libtool ltmain.sh missing stamp-h1 

Lo mismo hasta ahora …

Todo listo, pero después de 14 horas todavía no veo todos mis directorys en Git, solo veo el file README.

¿Cómo puedo comprometer todo? (siguiendo http://scottr.org/presentations/git-in-5-minutes/ )

Este es el método simple para agregar directorys vacíos:

 //create some empty, gitignore files. touch ./someDir/.gitignore touch ./someOtherDir/.gitignore 

… etc.

 git add ./someDir/.gitignore git add ./someOtherDir/.gitignore 

… etc …

 git commit -am " Add empty project directories." 

Esto se debe a que, como se menciona en otras respuestas, git rastrea los files en los directorys, pero ignora los directorys por sí mismos. Esto también podría solucionarse / resolverse en el mecanismo de agregar git en versiones más actualizadas (recuerdo vagamente que agregaron sus propios files .gitignore a directorys vacíos), así que realmente recomiendo tratar de actualizar a la versión más alta de git que pueda para ese y otros beneficios, su distribución puede proporcionar por defecto una versión anterior, como ubuntu y debian do.

Editar:

La técnica anterior está diseñada para la cantidad mínima de perturbación de sus directorys de trabajo con el fin de rastrear carpetas vacías. Cada uno de los directorys obtendría en sus ejemplos su propio file .gitignore (puede tener tantos files .gitignore como quiera, son aditivos).

Entonces, al final, la estructura de su carpeta se vería así:

 /var/tmp/main .. plugin1 .... mysource.c .... .gitignore .. plugin2 .... mysource.c .... .gitignore .. plugin3 .... mysource.c .... .gitignore 

¡Y luego agregaría los files .gitignore como marcadores de position!

Pero demos un paso atrás y probamos la táctica opuesta:

Máxima visibilidad.

Vaya a la carpeta que desee agregar, por ejemplo, plugin1 . Crea un file en esa carpeta, llámalo placeholder .

Ahora navegue a esa carpeta desde la línea de command, por ejemplo, cd /var/tmp/main/plugin1/ y git add ese file de marcador de position, por ejemplo, git add placeholder . Le has dicho a git que quieres que se rastree ese file (si git diff , puedes revisar los cambios "propuestos". Te dirá que ve el file, pero que es solo un file vacío, lo cual está bien).

Ahora ingrese el file: git commit placeholder -m " Adding a Placeholder file."

Cuando agrega cualquier file, todas las carpetas que contienen ese file, hasta la carpeta principal de git, se agregan también, por lo que ahora tendrá / plugin1 / seguido en git.

Vaya, use git add /path/to/file en cualquiera de esos files fuente (?) C que tenga, y luego confirme los cambios, a través de git commit /path/to/file . En general, todo lo que sea text puro, es bueno agregarlo al repository, por supuesto.

Finalmente: tenga en count que el git status solo está diseñado para informarle sobre los files modificados y rastreados, incluidos los files recién agregados. Si no hay modificaciones, solo obtendrá resultados en blanco.

Para ver los files que, en realidad, git rastrea, use git ls-tree HEAD que solo le mostrará los files rastreados.

Para un comienzo limpio

Así es como generalmente comienzo un repository git.

 cd /path/to/project/ git init echo "README" >> README git add . git commit -am " Initial Commit of readme and files." 

Usted solo agregó su file README . Si escribe el git status , verá que todos sus demás files se consideran "sin seguimiento". Debes agregarlos con git add para que sean rastreados:

 git add file1 file2 file3 git commit -m 'Added remaining files to repository' git push 

El punto importante sobre "git add". es que mira el tree de trabajo y agrega todas esas routes a los cambios por etapas si se modifican o son nuevos y no se ignoran

Y ni Git ni Mercurial rastrean los directorys vacíos