Git is a distributed version control system written by the creator of Linux, Linus Torvalds, after he got frustrated with proprietary software. Git is similar to other version control systems such as subversion or CVS, but it's distributed. What this means is that if you clone a git project, you have the entire project history. You can commit, branch and tag all on you local machine without interacting with a server at all. If you were working with subversion or another centralized VCS all of your interactions occur with the server.
GitHub and similar services (BitBucket) bring all of the benefits of a decentralized VCS to a centralized service. GitHub also stores a copy of your project's repository just like any other developer. Then, you basically designate that as the project's central repository and all the developers push and pull their changes to and from that repository. GitHub takes this a step further by encouraging developers to fork a project's repository and then use that as their own centralized repository. From there they can send "pull requests" to the main project with their changes and then the project maintainers can review them before deciding whether to include them in their project or not.
Instalar GIT en Linux (debian-based):
sudo apt-get install git
Algunos comandos básicos de GIT: para información más detallada sobre GIT acudir a: Pagina oficial de Git - Documentación
- Configuración inicial:
- git --version
- git config --global user.name "Your Name"
- git config --global user.email <your email address>
- git config --list
- Comandos básicos de utilización:
- git init: inicializa el directorio actual como un repositorio git.
- git status: muestra el estado actual del directorio (repositorio).
- git add <file(s)/folder(s)>: añadir ficheros/directorios al área de trabajo actual (staging area)
- git commit: confirmar cambios en el repositorio.
- git log --oneline: muestra un log reducido de los commit realizados.
- git checkout <commit> <file>: recuperar la versión antigua de un fichero desde un commit.
- git reset <file>: "sacar" de la zona de trabajo actual (staged area) un fichero, pero dejando el directorio sin cambios.
- git reset: volver la zona de trabajo actual (staging area), al último commit, sin afectar al directorio actual.
- Conectando con un repositorio online
- git remote add origin <repository URL>: hace el link entre el repositorio local y el remoto.
- git push -u origin master: carga el commit del repositorio local en el remoto.
- git clone <repository URL>: crea un repositorio local como un clon del remoto.
- git fetch origin: descarga la última versión de la rama master del repositorio remoto. Pero no mergea en el repositorio local.
- git pull origin master: descargar la última versión de la rama master del repositorio remoto, y la mergea con la master local.
- Trabajando con ramas
- git branch feature: crea una nueva rama llamada "feature". Nunca se debe desarrollar en master, porque master debe representar la versión que tenemos en productivo.
- git checkout feature: posiciones el puntero HEAD sobre la rama feature. A partir de aquí estamos trabajando en "feature"
- git push origin feature: hace un push de la rama feature en el repositorio apuntado por "origin" (ver git remotes -v).