origin example comandos git version-control

example - Git para principiantes: la guía práctica definitiva.



git pull origin master (30)

¿Cómo se ''etiqueta'' un conjunto particular de revisiones?

¿Cómo ''marca'' ''etiqueta'' o ''libera'' un conjunto particular de revisiones para un conjunto particular de archivos para que siempre pueda extraer eso más tarde?

Usando el comando git tag .

Para simplemente "etiquetar" la revisión actual, simplemente ejecutaría ...

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

Para listar las etiquetas actuales, simplemente ejecute la git tag sin argumentos, o -l (L minúscula):

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

Para eliminar una etiqueta, utiliza la marca -d :

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

Para etiquetar un compromiso específico (anterior), simplemente haga ...

git tag [tag name] [revision SHA1 hash]

Por ejemplo:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

Nota: de forma predeterminada, git crea una etiqueta "liviana" (básicamente una referencia a una revisión específica). La forma "correcta" es usar la bandera -a . Esto iniciará su editor solicitando un mensaje de etiqueta (idéntico a pedir un mensaje de confirmación, también puede usar el indicador -m para proporcionar el mensaje de etiqueta en la línea de comandos). El uso de una etiqueta anotada crea un objeto con su propia ID, fecha, etiquetador (autor) y, opcionalmente, una firma GPG (con la etiqueta -s ). Para más información sobre esto, vea esta publicación.

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

Y para enumerar las etiquetas con anotaciones, use la -n1 para mostrar 1 línea de cada mensaje de etiqueta ( -n245 para mostrar las primeras 245 líneas de cada anotación, y así sucesivamente):

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

Para más información, vea la página de manual de git-tag (1)

Ok, después de ver este post de PJ Hyett , decidí saltar al final e ir con Git .

Entonces, lo que necesito es una guía práctica para principiantes de Git. "Principiante" se define como alguien que sabe cómo manejar su compilador, comprende en cierto nivel lo que es un Makefile y ha tocado el control de la fuente sin entenderlo muy bien.

"Práctico" se define como esta persona no quiere entrar en gran detalle con respecto a lo que Git está haciendo en el fondo, y ni siquiera le importa (o saber) que está distribuido. Sus respuestas pueden sugerir las posibilidades, pero intente apuntar al principiante que desea mantener un repositorio ''principal'' en un ''servidor'' del cual se hace una copia de seguridad y asegurar, y trate su repositorio local como un recurso ''cliente''.

Asi que:

Instalación / Configuración

Trabajando con el código

Etiquetado, ramificación, lanzamientos, líneas de base.

Otro

  • Describa y vincule a una buena interfaz gráfica de usuario, un complemento IDE, etc. que haga de Git un recurso de línea que no sea de comando, pero enumere sus limitaciones y sus beneficios.
    • msysgit - Plataforma cruzada, incluida con Git
    • msysgit - Visor de historia multiplataforma, incluido con Git
    • msysgit - Mac OS X
    • msysgit - Visor de historia de Mac OS X
    • msysgit - multiplataforma, comercial, beta
    • tig - consola GUI para Linux
    • qgit - GUI para Windows, Linux
    • msysgit - paquete para Windows, incluye GUI amigable
  • ¿Alguna otra tarea común que un principiante deba saber?
  • ¿Cómo trabajo de manera efectiva con un conjunto de repositorios de subversión como mi fuente de control de origen?

Otras referencias de principiantes de Git.

Profundizando en Git

Revisaré las entradas de vez en cuando y las ordenaré para que tengan una apariencia y un tacto coherentes y sea fácil de escanear la lista. Siéntase libre de seguir una simple "cabecera - breve explicación - lista de instrucciones - errores y Información adicional "plantilla. También enlazaré con las entradas de la lista de viñetas anterior para que sea fácil encontrarlas más adelante.


¿Cómo se configura un repositorio de equipo compartido?

A continuación se describe cómo configurar un repositorio normal , pero ¿cómo se configura un repositorio de equipo que todos puedan obtener y enviar desde y hacia?

Usando un sistema de archivos NFS compartido

Suponiendo que su equipo ya tiene, por ejemplo, una membresía de grupo compartida que se puede utilizar.

mkdir /your/share/folder/project.git cd /your/share/folder/project.git newgrp yourteamgroup # if necessary git init --bare --shared

Para comenzar a usar este repositorio, lo más fácil es comenzar desde un repositorio local que ya ha estado usando:

cd your/local/workspace/project git remote add origin /your/share/folder/project.git git push origin master

Otros ahora pueden clonar esto y comenzar a trabajar:

cd your/local/workspace git clone /your/share/folder/project.git

Utilizando SSH

Configurar una cuenta de usuario en el servidor de destino. Si usa una cuenta sin contraseña, una cuenta con una contraseña o utiliza authorized_keys realmente depende de su nivel de seguridad requerido. Echa un vistazo a Configuring Git over SSH para obtener más información.

Si todos los desarrolladores usan la misma cuenta para acceder a este repositorio compartido, no es necesario que use la opción --shared como se --shared anteriormente.

Después de iniciar el repositorio de la misma manera que arriba, haces el impulso inicial de esta manera:

cd your/local/workspace/project git remote add origin user@server:/path/to/project.git git push origin master

¿Ves la similitud con lo anterior? Además, lo único que podría suceder es que SSH solicite una contraseña si la cuenta tiene una contraseña. Si obtiene este aviso en una cuenta sin contraseña, el servidor SSH probablemente haya deshabilitado PermitEmptyPasswords .

La clonación ahora se ve así:

cd your/local/workspace git clone user@server:/path/to/project.git


¿Cómo se crea un nuevo proyecto / repositorio?

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

Esto es diferente de los sistemas de control de versiones "centralizados" (como subversión), donde un "repositorio" está alojado en un servidor remoto, que se checkout en un directorio de "copia de trabajo". Con git, tu copia de trabajo es el repositorio.

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

Por ejemplo,

cd ~/code/project001/ git init

Esto crea una carpeta .git (oculta) en el directorio actual.

Para crear un nuevo proyecto, ejecute git init con un argumento adicional (el nombre del directorio que se creará):

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

Para verificar si la ruta actual actual está dentro de un repositorio git, simplemente ejecute el git status ; si no es un repositorio, informará "fatal: no un repositorio git"

También puede listar el directorio .git y verificar que contiene archivos / directorios similares a los siguientes:

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

Si por alguna razón desea "des-git" un repositorio (desea dejar de usar git para rastrear ese proyecto). Simplemente elimine el directorio .git en el nivel base del repositorio.

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

Precaución: Esto destruirá todo el historial de revisiones, todas sus etiquetas, todo lo que git ha hecho. No tocará los archivos "actuales" (los archivos que se pueden ver actualmente), pero los cambios anteriores, los archivos eliminados, etc. ¡serán irrecuperables!


¿Cómo se ramifica?

La rama predeterminada en un repositorio de git se llama master .

Para crear una nueva rama de uso.

git branch <branch-name>

Para ver una lista de todas las ramas en el tipo de repositorio actual

git branch

Si quieres cambiar a otra rama puedes usar

git checkout <branch-name>

Para crear una nueva rama y cambiar a ella en un solo paso

git checkout -b <branch-name>

Para borrar una rama, usa

git branch -d <branch-name>

Para crear una rama con los cambios de la rama actual, haga

git stash git stash branch <branch-name>


Cómo instalar Git

En Windows:

Instalar msysgit

Hay varias descargas:

  • Git: use esto a menos que necesite específicamente una de las otras opciones a continuación.
  • PortableGit: use esto si desea ejecutar Git en una PC sin instalarlo en esa PC (por ejemplo, ejecutar Git desde una unidad USB)
  • msysGit: usa esto si quieres desarrollar Git en sí mismo. Si solo quiere usar Git para su código fuente, pero no quiere editar el código fuente de Git , no necesita esto.

Esto también instala un shell bash de Cygwin, por lo que puede usar git en un shell más agradable (que cmd.exe), y también incluye git-gui (accesible mediante el comando git gui , o Start > All Programs > Git Menú Start > All Programs > Git )

Mac OS X

Use el git-osx-installer , o también puede instalar desde la fuente

A través de un gestor de paquetes

Instala git usando tu gestor de paquetes nativo. Por ejemplo, en Debian (o Ubuntu):

apt-get install git-core

O en Mac OS X, a través de MacPorts :

sudo port install git-core+bash_completion+doc

... o fink:

fink install git

... o Homebrew :

brew install git

En distribuciones basadas en Red Hat, como Fedora:

yum install git

En Cygwin, el paquete Git se puede encontrar en la sección "devel"

Desde la fuente (Mac OS X / Linux / BSD / etc.)

En Mac OS X, si tiene las Herramientas de desarrollador instaladas, puede compilar Git desde una fuente muy fácilmente. Descargue la última versión de Git como .tar.bz o .tar.gz desde http://git-scm.com/ y .tar.bz (haga doble clic en Finder)

En Linux / BSD / etc. debería ser lo mismo. Por ejemplo, en Debian (y Ubuntu), necesita instalar el paquete build-essential través de apt .

Luego, en una Terminal, cd al lugar donde extrajo los archivos (Ejecutar cd ~/Downloads/git*/ debería funcionar), y luego ejecute ...

./configure && make && sudo make install

Esto instalará Git en el lugar predeterminado ( /usr/local , por lo que git estará en /usr/local/bin/git )

Le pedirá que ingrese su contraseña (para sudo ), esto es para que pueda escribir en el directorio /usr/local/ , al que solo el usuario "root" puede acceder, ¡por lo que se requiere sudo!

Si desea instalarlo en algún lugar separado (para que los archivos de Git no se mezclen con otras herramientas), use --prefix con el comando de configuración:

./configure --prefix=/usr/local/gitpath make sudo make install

Esto instalará el binario git en /usr/local/bin/gitpath/bin/git , por lo que no tiene que escribir eso cada vez que deba agregar a su $PATH agregando la siguiente línea en su ~/.profile :

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

Si no tiene acceso a sudo, puede usar --prefix=/Users/myusername/bin e instalarlo en su directorio de inicio. Recuerde agregar ~/bin/ a $PATH

El script x-git-update-to-latest-version automatiza mucho de esto:

Este script actualiza mi clon local del repositorio git (localy en ~/work/track/git ), y luego configura, instala (en /usr/local/git - git describe ) y actualiza el enlace simbólico /usr/local/git .

De esta manera, puedo tener /usr/local/git/bin en mi PATH y siempre estoy usando la última versión.

La última versión de este script también instala las páginas del manual. MANPATH ajustar su MANPATH para incluir el directorio /usr/local/git/share/man .


GUIs para git

Git GUI

Incluido con git: ejecute git gui desde la línea de comandos, y el instalador msysgit Windows msysgit agrega al menú Inicio.

Git GUI puede hacer la mayoría de lo que necesitarías hacer con git. Incluyendo cambios de escenario, configurar git y repositorios, empujar cambios, crear / retirar / eliminar ramas, combinar, y muchas otras cosas.

Una de mis características favoritas es el acceso directo "stage line" y "stage hunk" en el menú del botón derecho, que le permite ingresar partes específicas de un archivo. Puedes lograr lo mismo a través de git add -i , pero me resulta más fácil de usar.

No es la aplicación más bonita, pero funciona en casi todas las plataformas (basándose en Tcl / Tk)

Screenshots | un screencast

GitK

También se incluye con git. Es un visor de historial de git y le permite visualizar el historial de un repositorio (incluidas las sucursales, cuando se crean y fusionan). Puedes ver y buscar confirmaciones.

Va muy bien con git-gui.

Gitnub

Aplicación Mac OS X. Principalmente es un equivalente del git log de git log , pero tiene cierta integración con github (como la "Vista de red").

Se ve bonito y se adapta a Mac OS X. Puedes buscar repositorios. El mayor criticismo de Gitnub es que muestra la historia de manera lineal (una sola rama a la vez), no visualiza ramificaciones ni fusiones, lo que puede ser importante para git, aunque esta es una mejora planificada.

Gitnub | github

GitX

Pretende ser un "clon gitk para OS X".

Puede visualizar el historial de bifurcaciones no lineales, realizar confirmaciones, ver y buscar confirmaciones, y tiene otras características interesantes como poder "ver rápidamente" cualquier archivo en cualquier revisión (presione el espacio en la vista de lista de archivos), exportar cualquier archivo (a través de arrastrar y soltar).

Está mucho mejor integrado en OS X que git-gui / gitk , y es rápido y estable incluso con repositorios excepcionalmente grandes.

El pieter original del repositorio de git no se ha actualizado recientemente (más de un año en el momento de la escritura). Hay una rama que se mantiene más activamente disponible en brotherbard/gitx - agrega "barra lateral, buscar, jalar, empujar, agregar control remoto, combinar, selección de cerezas, rebase, clonar, clonar a"

Download | Screenshots | repositorio git | brotherbard/gitx | tenedor laullon

SmartGit

Desde la página de inicio:

SmartGit es una interfaz para el sistema distribuido de control de versiones Git y se ejecuta en Windows, Mac OS X y Linux. SmartGit está destinado a los desarrolladores que prefieren una interfaz gráfica de usuario sobre un cliente de línea de comandos, para ser aún más productivos con Git, el DVCS más poderoso de la actualidad.

Puedes descargarlo desde SmartGit .

Download

TortoiseGit

TortoiseSVN versión Git para usuarios de Windows.

Es portar TortoiseSVN a TortoiseGit La última versión 1.2.1.0 Esta versión puede completar tareas regulares, tales como confirmación, mostrar registro, diferencia dos versiones, crear rama y etiqueta, crear parche, etc. Vea ReleaseNotes para detalles. Bienvenidos a aportar este proyecto.

Download

QGit

QGit es un visor de git GUI construido en Qt / C ++.

Con qgit podrá examinar el historial de revisiones, ver el contenido de parches y los archivos modificados, siguiendo gráficamente diferentes ramas de desarrollo.

Download

gitg

gitg es un visor de repositorio de git dirigido a gtk + / GNOME. Uno de sus principales objetivos es proporcionar una experiencia de usuario más unificada para las interfaces de git en varios escritorios. No hace esto al escribir una aplicación multiplataforma, sino mediante una estrecha colaboración con clientes similares para otros sistemas operativos (como GitX para OS X).

Caracteristicas

  • Examinar el historial de revisiones.
  • Manejar repositorios grandes (carga repositorio de linux, más de 17000 revisiones, en menos de 1 segundo).
  • Cometer cambios.
  • Escuadrones individuales en etapa / despiece.
  • Revertir cambios.
  • Mostrar la diferencia coloreada de cambios en las revisiones.
  • Busque el árbol para una revisión dada.
  • Exportar partes del árbol de una revisión dada.
  • Proporcione cualquier refspec que un comando como ''git log'' pueda entender para construir el historial.
  • Mostrar y cambiar entre ramas en la vista de historial.

Descargar: releases o source

Gitbox

Gitbox es una interfaz gráfica de Mac OS X para el sistema de control de versiones de Git. En una sola ventana puede ver las ramas, el historial y el estado del directorio de trabajo.

Las operaciones cotidianas son fáciles: cambios de escenario y de escenario con una casilla de verificación. Confíe, tire, fusione y presione con un solo clic. Haga doble clic en un cambio para mostrar una diferencia con FileMerge.app.

Gitbox

Gity

El sitio web de Gity no tiene mucha información, pero a partir de las capturas de pantalla de allí parece ser una git gui OS X de código abierto rica en características.

Download o source

Meld

Meld es una herramienta visual de fusión y fusión. Puede comparar dos o tres archivos y editarlos en su lugar (diffs se actualiza dinámicamente). Puedes comparar dos o tres carpetas y lanzar comparaciones de archivos. Puede navegar y ver una copia de trabajo de los sistemas de control de versiones más populares, como CVS, Subversion, Bazaar-ng y Mercurial [ y Git ].

Downloads

Katana

Una interfaz de Git para OSX por Steve Dekorte.

De un vistazo, vea qué ramas remotas tienen cambios para tirar y los repos locales tienen cambios para empujar. Se admiten las operaciones git de agregar, cometer, empujar, jalar, etiquetar y restablecer, así como las diferencias visuales y visuales de la jerarquía del proyecto que resaltan los cambios y adiciones locales.

Gratis para 1 repositorio, $ 25 para más.

Katana

Sprout (anteriormente GitMac)

Se enfoca en hacer que Git sea fácil de usar. Cuenta con una interfaz de usuario nativa de Cocoa (similar a Mac), navegación de repositorio rápida, clonación, push / pull, ramificación / fusión, visual diff, sucursales remotas, fácil acceso a la Terminal y más.

Al hacer que las acciones Git más comúnmente utilizadas sean intuitivas y fáciles de realizar, Sprout (anteriormente GitMac) hace que Git sea fácil de usar. Compatible con la mayoría de los flujos de trabajo de Git, Sprout es ideal para diseñadores y desarrolladores, colaboración en equipo y usuarios avanzados y principiantes por igual.

Descargar | Sitio web

Tower

Una interfaz gráfica de usuario de Git rica en funciones para Mac OSX. Prueba gratuita de 30 días, $ 59 USD por una licencia de usuario único.

Download | Tower

EGit

EGit es un proveedor del equipo Eclipse para el sistema de control de versiones Git. Git es un SCM distribuido, lo que significa que cada desarrollador tiene una copia completa de todo el historial de cada revisión del código, lo que hace que las consultas contra el historial sean muy rápidas y versátiles.

El proyecto EGit está implementando herramientas Eclipse sobre la implementación JGit Java de Git.

Download | EGit

Extensiones Git

Open Source para Windows: instala todo lo que necesita para trabajar con Git en un solo paquete, fácil de usar.

Git Extensions es un kit de herramientas para que trabajar con Git en Windows sea más intuitivo. La extensión de shell se integrará en el Explorador de Windows y presenta un menú de contexto en archivos y directorios. También hay un complemento de Visual Studio para usar git de Visual Studio.

Download

dbr gracias a dbr por elaborar sobre las cosas de git gui.

SourceTree

SourceTree es un cliente de Mac gratuito para Git, Mercurial y SVN. Construido por Atlassian, la gente detrás de BitBucket, parece funcionar igual de bien con cualquier sistema de VC, lo que le permite dominar una sola herramienta para usar con todos sus proyectos, sin embargo, están controlados por versión. Empaquetado de características y GRATIS.

Preparado para expertos y repleto de funciones para usuarios principiantes y avanzados:

Revisar los conjuntos de cambios salientes y entrantes. Cereza-pick entre ramas. Manejo de parches, rebase, stash / shelve y mucho más.

Download | SourceTree


Git Reset

Diga que hace un tirón, fíjelo en su código y decida que no le gusta. Use git-log, o tig, y encuentre el hash de donde quiera que quiera volver (probablemente su última confirmación antes del pull / merge) copie el hash, y haga:

# Revert to a previous commit by hash: git-reset --hard <hash>

En lugar del hash, puedes usar HEAD ^ como acceso directo para la confirmación anterior.

# Revert to previous commit: git-reset --hard HEAD^


¿Cómo compara dos revisiones de un archivo, o su archivo actual y una revisión anterior?

El comando de comparación es git diff.

Para comparar 2 revisiones de un archivo:

$ git diff <commit1> <commit2> <file_name>

Eso dife commit1 contra commit2; Si cambia el orden, los archivos se difieren al revés, lo que puede no ser lo que espera ...

Para comparar el archivo almacenado actual con el repositorio:

$ git diff --staged <file_name>

Para comparar el archivo actual no en fase con el repositorio:

$ git diff <file_name>


¿Cómo fusionar ramas?

Si desea fusionar una rama (por ejemplo, mastera release), asegúrese de que su rama actual sea la rama objetivo en la que desea fusionar (use git brancho git statuspara ver su rama actual).

Entonces use

git merge master

(donde masteres el nombre de la rama que desea combinar con la rama actual).

Si hay algún conflicto, puedes usar

git diff

Para ver los conflictos pendientes tienes que resolver.


¿Cómo puedo crear una rama en un repositorio remoto?

Suponiendo que haya clonado su repositorio remoto desde algún repositorio remoto único.

# create a new branch locally git branch name_of_branch git checkout name_of_branch # edit/add/remove files # ... # Commit your changes locally git add fileName git commit -m Message # push changes and new branch to remote repository: git push origin name_of_branch:name_of_branch


¿Cómo ves el historial de revisiones de un archivo?

git log -- filename


Código de salida

Primero ve a un directorio vacío, usa "git init" para convertirlo en un repositorio, luego clona el repositorio remoto en el tuyo.

git clone [email protected]:/dir/to/repo

Desde dondequiera que clones inicialmente es desde donde "git pull" se extraerá de forma predeterminada.


Cómo rastrear sucursales remotas

Suponiendo que hay un repositorio remoto desde el que clonó su repositorio local y también suponiendo que hay una rama llamada ''some_branch'' en ese repositorio remoto, aquí se explica cómo rastrearlo localmente

# list remote branches git branch -r # start tracking one remote branch git branch --track some_branch origin/some_branch # change to the branch locally git checkout some_branch # make changes and commit them locally .... # push your changes to the remote repository: git push


Consola UI - Tig

Instalación:

apt-get install tig

Uso

Mientras esté dentro de un repositorio git, escriba ''tig'', para ver un registro interactivo, presione ''enter'' en cualquier registro para ver más información sobre él. h de ayuda, que enumera las funcionalidades básicas.

Trivialidades

"Tig" es "Git" al revés.


Cómo configurarlo para ignorar archivos:

La posibilidad de que git ignore los archivos que no deseas que rastreen es muy útil.

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

  • Una línea en blanco no ignora ningún archivo, generalmente se usa como separador.
  • Las líneas que miran con # sirven como comentarios.
  • El El prefijo es opcional y negará el patrón. Cualquier patrón negado que coincida anulará patrones de precedencia más bajos.
  • Soporta expresiones avanzadas y comodines.
    • Ej .: El patrón: *. [Oa] ignorará todos los archivos en el repositorio que terminan en .o o .a (archivos de objetos y archivos)
  • Si un patrón tiene un directorio que termina con una barra diagonal, solo coincidirá con este directorio y las rutas debajo de él. Esto excluye archivos regulares y enlaces simbólicos de la coincidencia.
  • Una barra diagonal inicial coincidirá con todos los archivos en ese nombre de ruta.
    • Ejemplo : el patrón /*.c coincidirá con el archivo foo.c pero no con la barra / awesome.c

Gran ejemplo de la gitignore(5) del gitignore(5) :

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

En general, hay tres formas diferentes de ignorar los archivos sin seguimiento.

1) Ignorar para todos los usuarios del repositorio:

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

Edite .gitignore para que coincida con sus preferencias para los archivos que deben / no deben ser ignorados.

git add .gitignore

y cometer cuando hayas terminado.

2) Ignorar solo para su copia del repositorio:

Agregue / edite el archivo $ GIT_DIR / info / exclude en su copia de trabajo, con sus patrones preferidos.

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

Has terminado

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

Los patrones de ignorar globales para su sistema pueden ir en un archivo con el nombre que desee.

El mío personalmente se llama ~ / .gitglobalignore

Luego puedo informar a git de este archivo editando mi archivo ~ / .gitconfig con la siguiente línea:

core.excludesfile = ~/.gitglobalignore

Has terminado

Me parece que la página de manual de gitignore(5) es el mejor recurso para obtener más información.


Cometer cambios

Una vez que haya editado un archivo, debe confirmar sus cambios en git. Cuando ejecute este comando, le pedirá un mensaje de confirmación, que es solo un pequeño fragmento de texto que le dice a todos lo que ha cambiado.

$ git commit source/main.c

Se cometerá el archivo main.c en el directorio ./source/

$ git commit -a # the -a flag pulls in all modified files

confirmará todos los archivos modificados (pero no los archivos nuevos, que deben agregarse al índice con git-add). Si desea confirmar solo ciertos archivos, primero deberá configurarlos con git-add y luego confirmar sin la marca -a.

El compromiso solo cambia su repositorio local, aunque no los repositorios remotos. Si desea enviar las confirmaciones al repositorio remoto, deberá realizar una inserción.

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

Para alguien que viene de CVS o SVN, esto es un cambio, ya que el compromiso con el repositorio central ahora requiere dos pasos.


Obtener el código más reciente

$ git pull <remote> <branch> # fetches the code and merges it into # your working directory $ git fetch <remote> <branch> # fetches the code but does not merge # it into your working directory $ git pull --tag <remote> <branch> # same as above but fetch tags as well $ git fetch --tag <remote> <branch> # you get the idea

Eso cubre prácticamente todos los casos para obtener la última copia del código del repositorio remoto.


¿Cómo elimino una rama en un repositorio remoto?

Presiona tu control remoto :antes del nombre de la rama.

git push origin :mybranchname

siendo originel nombre de su control remoto y mybranchnameel nombre de la rama a punto de ser eliminado

http://help.github.com/remotes/


Aquí hay una copia de la publicación de PJ Hyett, ya que ya no está disponible:

Git no es difícil

El 23 de noviembre de 2008

Cuando le decimos a la gente por qué deberían usar Git sobre Subversion, la línea de consulta es: "Git hace Subversion mejor que Subversion, pero hace mucho más que eso".

El "mucho más" se compone de un montón de cosas que hacen que Git realmente brille, pero puede ser bastante abrumador para aquellos que vienen de otros SCM como Subversion.

Dicho esto, no hay nada que le impida usar Git como usted usa Subversion mientras realiza la transición.

Suponiendo que haya instalado el software necesario y tenga un repositorio remoto en alguna parte, así es como tomaría el código y rechazaría los cambios con Subversion:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

¿Y cómo lo harías en Git?

$ git clone [email protected]:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Un comando más para hacer que suceda en Git. Ese comando adicional tiene grandes implicaciones, pero para los propósitos de esta publicación, eso es de lo que estamos hablando, un comando adicional.

Ver, realmente no es tan difícil.

Actualización: Sería negligente no mencionar que el equivalente a actualizar su copia local en Subversion en comparación con Git es svn update y git pull , respectivamente. Solo un comando en ambos casos.


Bueno, a pesar del hecho de que nos pidió que no "simplemente" nos vinculamos con otros recursos, es bastante tonto cuando ya existe un recurso que crece en la comunidad (y que crece) que es realmente bastante bueno: el Libro de la Comunidad Git . En serio, estas más de 20 preguntas en una pregunta van a ser de todo menos concisas y consistentes. El Git Community Book está disponible en HTML y PDF y responde muchas de sus preguntas con respuestas claras, bien formateadas y revisadas por pares y en un formato que le permite saltar directamente a su problema actual.

Por desgracia, si mi publicación realmente te molesta, entonces la eliminaré. Solo dilo.


Ejemplo de flujo de trabajo con GIT.

Git es extremadamente flexible y se adapta bien a cualquier flujo de trabajo, pero no imponer un flujo de trabajo en particular podría tener el efecto negativo de dificultar la comprensión de lo que puede hacer con git más allá del flujo de trabajo de "copia de seguridad" lineal, y la utilidad de la bifurcación, por ejemplo. .

Esta publicación del blog explica muy bien un flujo de trabajo muy simple pero efectivo que es realmente fácil de configurar utilizando git.

citando de la publicación del blog: Consideramos que origin / master es la rama principal donde el código fuente de HEAD siempre refleja un estado listo para la producción:

El flujo de trabajo se ha vuelto lo suficientemente popular como para haber realizado un proyecto que implementa este flujo de trabajo: git-flow

Buena ilustración de un flujo de trabajo simple, donde realiza todos los cambios en desarrollo, y solo presiona para dominar cuando el código está en un estado de producción:

Ahora digamos que desea trabajar en una nueva función, o en refactorizar un módulo. Podría crear una nueva rama, lo que podríamos llamar una rama "característica", algo que llevará algún tiempo y podría romper algún código. Una vez que su función es "lo suficientemente estable" y desea moverla "más cerca" de la producción, fusiona su rama de función en el desarrollo. Cuando todos los errores se solucionan después de la fusión y su código pasa todas las pruebas de manera sólida, usted inserta sus cambios en el maestro.

Durante todo este proceso, encuentra un error de seguridad terrible, que debe solucionarse de inmediato. Podría tener una sucursal llamada hotfixes, que hace que los cambios se vuelvan a poner en producción más rápidamente que la rama "desarrollada" normal.

Aquí tiene una ilustración de cómo podría verse esta característica / revisión / desarrollo / flujo de trabajo de producción (bien explicado en la publicación del blog, y repito, la publicación del blog explica todo el proceso con mucho más detalle y mucho mejor que yo .


Git Magic es todo lo que siempre necesitarás. ¡Garantizada o le devolvemos su dinero!


git status es tu amigo, úsalo a menudo. Bueno para responder a preguntas como:

  • ¿Qué acaba de hacer ese comando?
  • ¿En qué rama estoy?
  • ¿Qué cambios estoy a punto de cometer, y he olvidado algo?
  • ¿Estaba en medio de algo la última vez que trabajé en este proyecto (días, semanas o quizás meses atrás)?

A diferencia de, digamos svn status , git status ejecuta casi instantáneamente incluso en proyectos grandes. A menudo me resultó tranquilizador mientras aprendía a usarlo con frecuencia, para asegurarme de que mi modelo mental de lo que estaba sucediendo era correcto. Ahora lo uso principalmente para recordarme lo que he cambiado desde mi último compromiso.

Obviamente, es mucho más útil si su .gitignore está bien configurado.


Cambios de empujar y tirar

De una manera simplificada, simplemente hacer git pushy git pull. Los cambios se fusionan y, si hay un conflicto, git te lo hará saber y podrás resolverlo manualmente.

Cuando empuja por primera vez a un repositorio remoto, debe hacer un git push origin master(maestro es la rama maestra). A partir de entonces solo haces el git push.

Empuje las etiquetas con git push --tags.


¿Por qué otro howto? Hay muy buenos en la red, como la guía git que es perfecta para comenzar. Tiene buenos enlaces, incluido el libro git al que se puede contribuir (alojado en git hub) y que es perfecto para esta tarea colectiva.

En , ¡realmente preferiría ver tus trucos favoritos!

El mío, que descubrí recientemente, se git stashexplica here , lo que le permite guardar su trabajo actual e ir a otra sucursal

EDITAR: como en la publicación anterior, si realmente prefiere el formato stackoverlow con publicaciones como wiki, eliminaré esta respuesta


Comencé con el tutorial oficial de Git . Creo que es lo suficientemente práctico para los principiantes (¡yo era, y aún soy, un principiante, según tu definición! Apenas capto los archivos make, solo he jugado un poco con Apache Subversion, etc.).


El libro gratuito Pro Git es definitivamente mi favorito, especialmente para principiantes.




Un buen artículo para entender cómo funciona Git es The Git Parable . Muy recomendado!