git: problemi con i branch

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

git: problemi con i branch

Messaggio da ZeroUno »

Sto cercando di capire come si deve git che al momento uso con successo ma al minimo delle funzionalità. Infatti non sono riuscito completamente a capire i branch.
Ho visto tutorial su tutorial ma non sono riuscito a capirli.

diciamo che do
$ git branch test
$ git checkout test
$ touch pippo
$ git add pippo
mi aspetterei che dopo un
$ git checkout master
questo pippo non si veda più, finchè non venga fatto un git merge;
e invece eccolo lì che rimane, e la stessa cosa (anzi, talvolta peggio) se invece della creazione di un file si tratta della modifica
finchè non effettuo un commit il file mi rimane su tutti i branch.

come si risolve la cosa?

Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

MelmothX
Linux 0.x
Linux 0.x
Messaggi: 89
Iscritto il: sab 25 nov 2006, 20:40

Re: git: problemi con i branch

Messaggio da MelmothX »

Facendo il commit, no? Alla fine l'add è una preparazione del commit.

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: git: problemi con i branch

Messaggio da raffaele181188 »

Beh, la soluzione del commit è banale :D

Matteo, stesso problema qui... Effettivamente è un comportamento stupido (e fa uguale se non dai neppure l'add)

...

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: git: problemi con i branch

Messaggio da ZeroUno »

MelmothX ha scritto:Facendo il commit, no?
E questo l'avevo capito, ma io il commit lo faccio di solito quando considero la release pronta (magari non al rilascio ma ad una situazione almeno funzionante) e per arrivare a tale release potrei a volte aver bisogno di vedere il contenuto di altri branch.
Alla fine l'add è una preparazione del commit.
Il problema è proprio prima dell'add. Nell'esempio l'add l'avevo messo perchè era il primo file; ma se dopo il commit modifico il file e faccio un checkout per switchare su un altro branch mi ritrovo questo file modificato e in caso di conflitti non mi fa nemmeno cambiare branch in modo temporaneo.

Inoltre mi capita di lavorare su due branch paralleli, feature A che contiene a.php e feature B che contiene b.php, io voglio che il branch A non veda b.php e viceversa non solo dopo i commit ma sempre, fino al merge dentro il master (e solo lì!!!). Esempio

Codice: Seleziona tutto

$ git init
$ touch index.php
$ git add .
$ git commit -m "Inizio progetto"

$ git branch A
$ git checkout A
Switched to branch "A"
$ touch a.php
$ ls
a.php  index.php
$ git add a.php
$ git commit -m "Inizio A"

$ git checkout master
Switched to branch "master"
$ git branch B
$ git checkout B
Switched to branch "B"
$ touch b.php
$ git add b.php
$ git commit -m "Inizio B"
$ ls
b.php  index.php

$ git checkout A
Switched to branch "A"
$ ls
a.php  index.php
fin quì tutto bene, A vede a.php, B vede b.php
ora vado a sviluppare A.

Codice: Seleziona tutto

$ echo "testA" >a.php
$ cat a.php
testA
# On branch A
# Changed but not updated:
#       modified:   a.php
prima di continuare a sviluppare A ho bisogno di vedere B:

Codice: Seleziona tutto

$ git checkout B
error: You have local changes to 'a.php'; cannot switch branches.

$ ls -l
-rw-r--r-- 1 matteo users 6 2009-06-22 17:13 a.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php

$ mv a.php c.php
$ ls -l
-rw-r--r-- 1 matteo users 6 2009-06-22 17:13 c.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php
$ git status
# On branch A
# Changed but not updated:
#       deleted:    a.php
# Untracked files:
#       c.php

$ git checkout B
Switched to branch "B"
$ ls -l
total 4
-rw-r--r-- 1 matteo users 0 2009-06-22 17:16 b.php
-rw-r--r-- 1 matteo users 6 2009-06-22 17:13 c.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php

$ git checkout A
$ ls -l
$ ls -l
total 4
-rw-r--r-- 1 matteo users 0 2009-06-22 17:17 a.php
-rw-r--r-- 1 matteo users 6 2009-06-22 17:13 c.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php

è tornato a.php (quello originale, cioè vuoto)
$ git status
# Untracked files:
#       c.php
Oppure, più semplicemente,

Codice: Seleziona tutto

$ git status
# On branch A
nothing to commit (working directory clean)
$ ls -l
total 0
-rw-r--r-- 1 matteo users 0 2009-06-22 17:21 a.php
-rw-r--r-- 1 matteo users 0 2009-06-22 17:24 c.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php
$ git status
# Untracked files:
#       c.php

$ git checkout B
Switched to branch "B"
$ ls -l
total 0
-rw-r--r-- 1 matteo users 0 2009-06-22 17:25 b.php
-rw-r--r-- 1 matteo users 0 2009-06-22 17:24 c.php
-rw-r--r-- 1 matteo users 0 2009-06-22 16:59 index.php
quì non vorrei visibile c.php
Che fosse visibile me lo aspetto in quanto è "Untracked", per questo però avrei fatto (dal branch A) un git add, solamente per tracciarlo con git e lasciarlo invisibile a B e visibile ad A.

Possibile che si debba per forza fare un commit (di una situazione ancora non fissata) per andare a vedere i file di un altro branch?
Git è potente, ma ditemi che questa non è una limitazione ma che piuttosto sono io a non saperlo usare.
raffaele181188 ha scritto:Beh, la soluzione del commit è banale :D
più che banale è costrittiva; non so che usi tu, ma fai un commit ogni volta che vuoi vedere un altro branch o vuoi fare un git pool sul master?
raffaele181188 ha scritto:Matteo, stesso problema qui...
si, ma non è per quel lavoro; per quello me la cavo benissimo senza branch, mentre per un altro mi resterebbero molto utili


Ciao
01
Ultima modifica di ZeroUno il mar 23 giu 2009, 14:53, modificato 1 volta in totale.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

MelmothX
Linux 0.x
Linux 0.x
Messaggi: 89
Iscritto il: sab 25 nov 2006, 20:40

Re: git: problemi con i branch

Messaggio da MelmothX »

Secondo me stai sbagliando approccio. Una "release" va/andrebbe marcata con un tag, i commit sono modifiche individuali e non costano nulla. In caso hai il rebase per sistemare tutto con più ordine e il clone per lavorare in parallelo. Documentazione in linea ce n'è a bizzeffe. Ciao.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: git: problemi con i branch

Messaggio da ZeroUno »

MelmothX ha scritto:Secondo me stai sbagliando approccio.
Il che è molto probabile.
Documentazione in linea ce n'è a bizzeffe.
Si, ho trovato parecchia roba, anche in italiano, ma poche risposte al mio problema, che a questo punto devo rianalizzare.


Per quanto riguarda invece i git remoti, è possibile vedere i file _prima_ di effettuare il pull?
Ho visto il --no-commit, ma comunque mi scarica i file, e se due file collidono non posso (o non ci sono riuscito) a fare il confronto tra i due file allo scopo di decidere il da farsi.

Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: git: problemi con i branch

Messaggio da targzeta »

Ma se non fai il commit le modifiche non appartengono a nessun branch. Se crei un nuovo branch questo risulta essere uguale al master, solo nel momento in cui effettui un commit le modifiche fatte apparterranno al nuovo branch con la conseguenza che divergerà dal master. Quindi mi sembra normale che il checkout dia noie.

Per le differenze remote, dal tutorial ufficiale:
Alice can peek at what Bob did without merging first, using the "fetch" command; this allows Alice to inspect what Bob did, using a special symbol "FETCH_HEAD", in order to determine if he has anything worth pulling, like this:

Codice: Seleziona tutto

alice$ git fetch /home/bob/myrepo master
alice$ git log -p HEAD..FETCH_HEAD
This operation is safe even if Alice has uncommitted local changes. The range notation HEAD..FETCH_HEAD" means "show everything that is reachable from the FETCH_HEAD but exclude anything that is reachable from HEAD. Alice already knows everything that leads to her current state (HEAD), and reviewing what Bob has in his state (FETCH_HEAD) that she has not seen with this command
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
ildiama
Linux 3.x
Linux 3.x
Messaggi: 536
Iscritto il: mar 27 dic 2005, 16:49
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4
Località: Senigallia
Contatta:

Re: git: problemi con i branch

Messaggio da ildiama »

MelmothX ha scritto:Secondo me stai sbagliando approccio.
quoto.
ZeroUno ha scritto: Per quanto riguarda invece i git remoti, è possibile vedere i file _prima_ di effettuare il pull?
git help fetch.

Io non so cosa hai letto, ma mi sembra che tu non sia stato particolarmente attento nel farlo. Ti consiglio di (ri)leggere almeno questo (http://www.kernel.org/pub/software/scm/ ... ryday.html).
Buono studio.

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: git: problemi con i branch

Messaggio da ZeroUno »

La maggior parte della documentazione che ho letto era in italiano. Non sono particolarmente ferrato in inglese, ma il link che mi hai dato sembra abbastanza semplice.

Comunque ora non ho molto tempo per continuare a vedermi git (questo lavoro lo devo cominciare) quindi per ora procederò senza branch (questo l'ho imparato abbastanza bene).

Ciao,
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi