Iniciandome en GIT

Iniciado por n-utz, 27 Agosto 2017, 18:30 PM

0 Miembros y 1 Visitante están viendo este tema.

n-utz

Buenas gente, la verdad que quería evitarme este post pero estoy tirando comandos sin saber que hacen bien hace rato sin conseguir resultados.

Estoy usando por primera vez git, con git bash.

Resulta que tenemos un proyecto entre 4 personas, para la facultad, yo soy simplemente un colaborador, no master.

El primer paso para empezar a entender git era simplemente subir una carpeta con el nombre Documentacion tecnica, pero no estoy teniendo suerte.

Les cuento lo que hice hasta ahora:


$git init    //En mi carpeta local
$git remote add origin {url de repo de github}


Luego, agregue una carpeta en mi carpeta local llamada Documentacion tecnica, para poder subirla, leí que debía tener por lo menos un archivo, leí que por convención se suele agregar .keep, entonces agregue un .keep.txt dentro de la carpeta de Documentación técnica.


$git status    //Para corroborar que me tome los cambios, y si los tomo.
$git commit -m "Subo carpeta de dcumentacion tecnica"


Hasta acá todo bien, pero cuando quise pushear es cuándo empezó el problema.


$git push origin master


Leí que para pushear había que tirar ese comando, pero al tirarlo me sale:

To https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


Entendí que me falta pullear antes, entonces puse, como leí por ahí:


$git pull origin master

//ESTO ME DEVUELVE:

From https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes
* branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories



Y ahí me estanqué y es cuándo empecé a tirar comendos sin saber bien qué es lo que hacían.

De algo me estoy perdiendo y no entiendo ni puedo encontrar que es. Entiendo que es algo de merge y las branch, pero sinceramente no sé cómo proseguir.

Acepto también algún documento que tenga bien explicado todos los comandos y cómo iniciarte en git, todos los que encontré explican bastante a las apuradas o mal.

Gracias gente.

engel lex

basicamente lo que pasó fue que

brach master
cada "o" es un commit

--o--o--o--o--o--o
           ^
tu estás aquí


para poder hacer el push al master tienes que estar en la punta, es decir, tener el ultimo commit, modificar el contenido en base a el y pushear en la punta, por eso te pide hace pull, para que te actualizes hasta la punta y luego publiques allí... pero cuidado porque el pull descartará tus campos actuales...

aquí tienes varias opciones

-copias tus cambios a otra carpeta, haces pull mueves los campos de vuelta y commit y push
-pides que te den un branch aparte y que el gitmaster la unifique al master cada vez que sea necesario
- usas un commit forzado (git push -f master) ojo... si no tenías los cambios que hizo el ultimo, se perderán....
-usas git stash... es lo más sano
Citargit stash # guardas tus cambios al "baul"
git pull me@github.com/myrepo.git #"halas los cambios nuevos
git stash apply #aplicas el contenido del baul sobre el contenido actual
git commit # commit

cuidado que si hay cambios por otras personas en los mismos archivos que tu haces, se perderán (dah)


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n-utz

Perfecto, entiendo la teoría de git pero no sé cómo aplicarla.

Ahora lo que estoy haciendo es una prueba para saber como pushear y pullear, acabo de mover el directorio que había creado, es decir la carpeta Documentacion tecnica, fuera del repositorio y tire un:

$git pull remote origin

//RESPONSE:

fatal: 'remote' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


Quiero aclarar que cuando pongo:

$git remove -v

origin apunta a la url correcta, no entiendo por qué no me deja pullear. ¿Será tema de permisos?, pero tenía entendido que por default git te da permisos, y para negartelos el master debería quitartelos, no creo que lo haya hecho, tiene menos conocimientos de git que yo jaja

Y para saber, en esta línea:

git pull me@github.com/myrepo.git #"halas los cambios nuevos

El me@github.com/myrepo.git representaría simplemente mi mail para el login?

engel lex

git pull remote origin

quien es remote? tienes que pasarle la cadena completa, el .git como te lo da github
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n-utz

#4
Le estaba errando a la URL evidentemente.

Que va, ahora tengo la .git, logré encontrarla, entonces probé ambas formas:

git pull https://github.com/user/ProjectNAME.git origin

#RESPONSE:

fatal: Couldn't find remote ref origin


Entonces hice:

$ git remote set-url origin https://github.com/user/ProjectNAME.git

$git pull origin master

#RESPONSE:

From https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes
* branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories


En fin, corregí la url y me sigue tirando lo mismo, la verdad no entiendo. ¿Me estoy salteando algo de la configuración?


EDIT: por si te sirve de algo para ayudarme.

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes.git
  Push  URL: https://github.com/SeminarioLenguajes/Seminario-de-Lenguajes.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

engel lex

mejor usa un editor visual mientras te adaptas a los internals de git... exíste uno que es libre para uso personal que se llama SmartGit
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.