jueves, 23 de junio de 2016

Journey to Git

Journey to Git

$ git status

$ git init

$ git add readme.txt
$ git add .
$ git add *.html

$ touch created.txt
$ git add created.txt
$ git commit

usar i para insertar comentario de commit
uasr :wq  para salir

$ git commit -m "segundo commit!"

para crear un branch
$ git branch NewBranch

para cambiarse al branch
$ git checkout NewBranch

se crea un archivo en NewBranch
$ git touch index.css

para regresar al master branch
$ git checkout master

para merge o unir los archivos en el master del branch NewBranch
$ git merge NewBranch
esto integra al master los cambios realizados en el NewBranch en este caso el archivo index.css

$ git commit -a -m "mensaje"
hace un add, y solo funciona con archivos ya creados y commiteados.

Al tener cambios en el mismo archivo en diferentes branches, al momento de unirlo al master
da un mensaje como el siguiente, y se debe resolver manualmente acomodando el contenido del archivo, y borrando las marcas que agrego git.  o sea <<<<<HEAD  ====== >>>>master

change x
<<<<<<< HEAD
change 7
=======
change 6
>>>>>>> master

despues del arreglo se commitea

$ git mergetool
es para invocar a una herramienta especializada para el arreglo de conflictos

Para configurar la herramienta mergetool de git, damos el siguiente comando, además se pueden configurar otras cosas en el archivo de configuración
$git config --global -e

Las siguientes lineas se tienen que ajustar en el archivo de configuración, además configuramos el notepad para edicion sencilla.
[diff]
        tool = C:\\Program Files\\KDiff3\\kdiff3.exe
[merge]
        tool = kdiff3
[mergetool "kdiff3"]
        path = C:\\Program Files\\KDiff3\\kdiff3.exe
        keepBackup = false
        trustExitCode = false
[guitool "notepad..."]
        cmd = notepad $ARGS
        argprompt = yes


Para lo anterior debemos tener instalado el KDiff3,  que es herramienta para merge.

winmerge es una herramienta como otras

Tambien puede hacerse desde windows

Esta es la vista del Mergetool que tiene integrado el IntelliJ


Este es el Git log integrado en IntelliJ


== Stage feature ==
on NewBranch master

$ touch newfile.txt

$ git checkout master

newfile.txt permanece visible en master

$ git checkout NewBranch
$ git add .
$ git stash
Saved working directory and index state WIP on NewBranch: 0983747 change Variante2
HEAD is now at 0983747 change Variante2

----------
$ git remote
$ git clone alberto.martinez@104.156.xxx.xxx:~/lab_beto
$ git remote
$ cd subdirectorio si aplica
$ git remote
origin
$ git remote -v
$ git fetch origin

con pull automaticamente fetch and merge
$ git pull origin

$ git commit -a -m "readme changes"

to push or change to remote repository to origin and commit them into the master branch
$ git push origin master
entonces requiere user y password

$ git remote add MyRepository http://github.com/somerepo.git

$ git remote
Myrepo
origin

$ git remote -v
MyRepo http://github.com/somerepo.git (fetch)
MyRepo http://github.com/somerepo.git (push)
origin      http://github.com/dustindavis/FluentGuard.git (fetch)
origin      http://github.com/dustindavis/FluentGuard.git (push)

$ git fetch myrepo







$ git stash apply
On branch NewBranch
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   gittest.txt.bak
        new file:   gittest.txt.orig
        new file:   gittest_BACKUP_8288.txt
        new file:   gittest_BASE_8288.txt
        new file:   gittest_LOCAL_8288.txt
        new file:   gittest_REMOTE_8288.txt
        new file:   newfile.txt

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)

        modified:   gittest.txt


Un ejemplo de archivo .gitignore
# gitignore configuration

# package files
.jar
.war
.ear

# generated files
.class

# directories
out/*









No hay comentarios:

Publicar un comentario