Blog

Entendiendo GIT

Comandos útiles

Dentro de la carpeta que quiero sincronizar via GIT hay que hacer:
git init

Después para configurar un repositorio externo a esa carpeta:
git remote add origin [email protected]:userXX/repoYYYY.git
Para agregar archivos nuevos antes de commitear:
git add .
Para commitear localmente mis cambios: git commit -m ‘first commit’Para commitear y agregar archivos al mismo tiempo: git commit -a -m ‘bla bla’ Para pushear mis cambios locales al repo remoto:
git push -u origin master

Para traer el contenido del repositorio:git pull origin master

Pasos para trabajar en con branches
git init
git remote add origin [email protected]:userXX/repoYYYY.git
git pull (este baja todo)
git checkout branch_name
 
git add .
git commit -m ‘bla bla’

git push origin
branch_name
 
Como deshacer cambios locales con lo del head 
git checkout — index.php (esto deshace los cambios en el archivo) 

Creando el puclic key para github.com

Para interactuar con guthub.com tuve que generar mi clave SSH publica sin clave y pegar el contenido del archivo generado por este comando

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/gonzo/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Luego me fije en el archivo generado en mi home:
tail .ssh/id_dsa.pub
Y creé una public key en mi user de github.com pegando el contenido entero de ese file.

Ignorando archivos

If you create a file in your repo named .gitignore git will use its rules when looking at files to commit. Note that git will not ignore a file that was already tracked before a rule was added to this file to ignore it. In such a case the file must be un-tracked, usually with git rm --cached filename

La forma más fácil y simple de hacer esto es crear un archivo llamado .gitignore en el directorio raíz de tu proyecto. Los archivos que incluyas aquí serán ignorados en todos los subdirectorios de tu proyecto, a menos que algún subdirectorio incluya su propio .gitignore.

$ cat .gitignore

# Podemos especificar archivos individuales
.DS_Store

# O usar comodines
*~
*.swp

# También es posible ignorar todos los subdirectorios y archivos en un directorio determinado
tmp/**/*

Si hice pull y parece que se actualizó más de lo que pensaba

git reflog command
muestra los ultimos estados. el de más arriba es el ultimo pull, el que le sigue es el anterior

git show 1b8bd39
este muestra que había en el estado anterior.

Pullear solo hasta cierta versión

git pull
this will fetch everything, then do a

git reset < hash here >
an example hash would be 965cd8cfe04f7c1654f1a23c163fcf557f264c1a
this will make the code to go back to that revision.

Pusheando archivos eliminados

git add -u

git will update its index to know that the files that you’ve deleted should actually be part of the next commit. Then you can run “git commit” to check in that change

Repo exclude

Local per-repo rules can be added to the .git/info/exclude file in your repo. These rules are not committed with the repo so they are not shared with others. This method can be used for locally-generated files that you don’t expect other users to generate, like files created by your editor.

Trabajando con branches

En GIT podes tener branches y despues pusheas el codigo con tu nuevo branch. El que quiere puede switchear a tu branch, o seguir en el master.

Para crear un branch y switchear a él:

  $ git checkout -b iss53
  Switched to a new branch “iss53”
el -b hace que lo cree y despues switchear

Create a new branch named AAA, referencing the same point in history as the current branch

  $ git branch AAA

Para solo switchear es:

  $ git checkout iss53

list all local branches

  $ git branch

list all remote branches
  $ git branch -r

list all local and remote branches

  $ git branch -a

Fuentes: esta

Si queremos mergear un branch con el master


$ git checkout master
$ git merge my-branch-name
Luego habrá que commitear/pushear al master si todo sale bien.

Creating a feature branch

When starting work on a new feature, branch off from the develop branch.
$ git checkout -b myfeature develop
Switched to a new branch “myfeature”

Incorporating a finished feature on develop
Finished features may be merged into the develop branch definitely add them to the upcoming release:

$ git checkout develop
Switched to branch ‘develop’
$ git merge –no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop


Configurar el usuario en un working copy


git config –add user.name “your-user-name”
git config –add user.email “[email blocked]”

Working with parent projects forks

In your local clone of Child, pull from Parent, adding it as a remote if you like:
$ cd child

$ git remote add parent $ git pull parent

The url of the parent could be the public github repo, or your local clone of it – the local clone will of course be faster. If you want to pull a branch other than the current HEAD of the parent repo, just add an argument (e.g. git pull parent topic-branch). If this is a one-time thing, you can just skip adding the remote: git pull [branch].

Pulling is a combination of fetching and merging, so once you’ve done that, you’ve got a new merge commit you’ll presumably want to push back to your public repo at some point.

DOCUMENTACIÓN