855 votos

Git para principiantes: La definitiva guía práctica

Ok, después de ver este post por PJ Hyett, me he decidido a saltar hasta el final y vaya con Git.

Así que lo que necesito es un principiante en la práctica de la guía para Git. "Principiante" que es definido como alguien que sabe cómo manejar su compilador, entiende a cierto nivel lo que un Makefile es, y ha tocado de control de código fuente, sin entender muy bien.

"Práctico" que es definido como esta persona no quiere entrar en gran detalle sobre lo que Git está haciendo en el fondo, y no le interesa (o saber) que es distribuido. Sus respuestas podrían alusión a las posibilidades, sino que trata de apuntar para el principiante que quiere mantener a un " principal " repositorio en un 'servidor' que está respaldada y segura, y el tratamiento de su repositorio local meramente como un " cliente " de los recursos.

Así:

Instalación/Configuración

Trabajar con el código

El etiquetado, la ramificación, de prensa, de líneas de base

Otros

  • Describir y enlace a una buena interfaz gráfica, IDE plugin, etc. que hace que Git no de la línea de comandos de recursos, pero por favor, la lista de sus limitaciones así como sus buenas.
    • msysgit - la plataforma de la Cruz, que se incluye con Git
    • gitk - Cruz de la plataforma de la historia del visor, que se incluye con Git
    • gitnub - Mac OS X
    • gitx - Mac OS X de la historia de visor
    • smartgit - la plataforma de la Cruz, comercial, beta
    • tig - consola GUI para Linux
    • qgit - GUI para Windows, Linux
    • Git Extensions - paquete, para Windows, incluye interfaz gráfica de usuario amigable
  • Cualquier otras tareas comunes de un principiante debería saber?
  • ¿Cómo trabajar de manera efectiva con un repositorio de subversion establecer como mi fuente de origen de control?

Otros Git principiante referencias

Profundizar en Git

Voy a ir a través de las entradas de vez en cuando y 'ordenado' de ellos, de forma que tenga un aspecto coherente/sentir y es fácil escanear la lista - no dude en seguir un simple "header - breve explicación de la lista de instrucciones - trampas e información adicional de la plantilla". Yo también voy enlace a las entradas de la lista de viñetas arriba, así que es fácil de encontrar más tarde.

118voto

dbr Puntos 66401

¿Cómo crear un nuevo proyecto/repositorio?

Un repositorio de git es simplemente un directorio que contiene un especial .git directorio.

Esto es diferente de "centralizada" de control de versiones (como los sistemas de subversion), donde un "repositorio" está alojado en un servidor remoto, que checkout en una "copia de trabajo" directorio. Con git, su copia de trabajo es el repositorio.

Simplemente ejecute git init en el directorio que contiene los archivos que desea seguir.

Por ejemplo,

cd ~/code/project001/
git init

Esto crea un .git (oculta) de la carpeta en el directorio actual.

Para hacer un proyecto nuevo, ejecute git init con un argumento adicional (el nombre del directorio a ser creado):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

Para comprobar si la ruta de acceso actual es dentro de un repositorio de git, simplemente ejecute git status - si no es un repositorio, se informará de "fatal: No es un repositorio de git"

Usted también podría lista de los .git directorio, y compruebe que contiene los archivos/directorios similar a la siguiente:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

Si por cualquier motivo desea "de git" un repositorio (usted desea dejar de utilizar git para el seguimiento de ese proyecto). Simplemente quite la .git directorio en el nivel de base del repositorio.

cd ~/code/project001/
rm -rf .git/

Precaución: Este va a destruir todo el historial de revisiones, todas sus etiquetas, todo git ha hecho. No va a tocar en el "actual" de los archivos (los archivos que actualmente pueden ver), pero los cambios anteriores, archivos eliminados y así será irrecuperable!

59voto

Pat Notz Puntos 46841

Así, a pesar del hecho de que usted le pidió que no "simplemente" enlace a otros recursos, es bastante tonto cuando ya existe una comunidad crecido (y creciente) de los recursos que realmente son muy buenas: el Git de la Comunidad de Libro. En serio, este 20+ preguntas en una pregunta va a ser cualquier cosa, pero concisa y coherente. El Git Comunidad Libro está disponible como HTML y PDF y respuestas a muchas de sus preguntas con textos claros, bien formateado y revisadas por pares, respuestas y en un formato que le permite saltar directamente a su problema en la mano.

Ay, si mi post realmente te molesta, entonces me voy a borrar. Acaba de decir.

56voto

Brian Gianforcaro Puntos 11985

Cómo configurarlo para ignorar los archivos:

La capacidad de tener git ignorar los archivos que usted no desea que la pista es muy útil.

Para ignorar a un archivo o conjunto de archivos proporciona un patrón. El patrón de sintaxis para git es bastante simple, pero potente. Es aplicable a todos los tres de los diferentes archivos que voy a mencionar a continuación.

  • Una línea en blanco ignora que no hay archivos que se utiliza generalmente como un separador.
  • Líneas de mirar con # servir como comentarios.
  • El ! prefijo es opcional y va a negar el patrón. Cualquier negado un patrón que coincida con anulará menor precedencia de los patrones.
  • Admite expresiones avanzadas y comodines
    • Ex: El patrón: *.[oa] omitirá todos los archivos en el repositorio final en .o o .a (objeto y archivo de los archivos)
  • Si el patrón tiene un directorio de acabar con una barra diagonal git solo partido de este directorio y de los caminos por debajo de ella. Esto excluye los archivos regulares y enlaces simbólicos desde el partido.
  • Un slash va a coincidir con todos los archivos en que el nombre de la ruta.
    • Ex: El patrón /*.c coincidirá con el fichero foo.c pero no bar/awesome.c

Gran Ejemplo de la gitignore(5) el hombre de la página:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]


Por lo general, hay tres maneras diferentes de ignorar sin marcas de tránsito archivos.

1) Ignorar para todos los usuarios del repositorio:

Agregar un archivo llamado .gitignore a la raíz de su copia de trabajo.

Editar .gitignore para que coincida con sus preferencias para los archivos de los que debería/no debería ser ignorado.

git add .gitignore

y cometer cuando hayas terminado.

2) Ignorar por sólo su copia del repositorio:

Agregar/Editar el archivo $GIT_DIR/info/exclude en su copia de trabajo, con su preferido de los patrones.

Ej: Mi copia de trabajo es ~/src/project1 así que me gustaría editar ~/src/proyecto1/.git/info/exclude

Estás hecho!

3) Omitir en todas las situaciones, en su sistema:

Patrones globales de ignorados para su sistema puede ir en un archivo con el nombre de lo que quieras.

La mía personal es llamado ~/.gitglobalignore

Puedo dejar que git saber de este archivo por la edición de mi ~/.gitconfig archivo con la siguiente línea:

core.excludesfile = ~/.gitglobalignore

Estás hecho!

Me parece la gitignore página man para ser el mejor recurso para obtener más información.

47voto

dbr Puntos 66401

¿Cómo se 'etiqueta' de un determinado conjunto de revisiones

¿Cómo se 'marca' 'etiqueta' o 'liberación' de un determinado conjunto de revisiones para un determinado conjunto de archivos de modo que siempre se puede tirar que una tarde?

El uso de la git tag de comandos.

Simplemente "etiqueta" de la revisión actual, sólo se puede ejecutar..

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

A la lista de las etiquetas actuales, simplemente ejecute git tag sin argumentos, o -l (con minúscula L):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

Para eliminar una etiqueta, utilice el -d bandera:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

A la etiqueta de un específico (anterior) cometer, sólo tiene que hacer..

git tag [tag name] [revision SHA1 hash]

Por ejemplo:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b


Nota: por defecto, git crea un "ligero" de la etiqueta (básicamente una referencia para una revisión). La forma "correcta" es el uso de la -a bandera. Esto se inicia el editor de pedir una etiqueta de mensaje (idéntica a pedir un mensaje de confirmación, también puede utilizar la -m indicador de suministro de la etiqueta de mensaje en la línea de comandos). Utilizando una anotada etiqueta crea un objeto con su propio número de IDENTIFICACIÓN, fecha, tagger (autor), y, opcionalmente, una firma GPG (usando el -s etiqueta). Para más información sobre esto, vea este post

git tag mytagwithmsg -a -m 'This is a tag, with message'

Y a la lista de las etiquetas con las anotaciones, el uso de la -n1 bandera de la muestra 1 línea de cada etiqueta de mensaje (-n245 a mostrar la primera 245 líneas de cada anotación, y así sucesivamente):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

Para obtener más información, consulte el git tag(1) Manual de la Página

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X