DarwinNE ha scritto:Ciao,
ci sono cose che non capisco molto bene neppure io.
Ho seguito più o meno le istruzioni datemi da GitHub per fare il merge manualmente. Se guardi questa pagina:
https://github.com/DarwinNE/FidoCadJ/networkperò non si vede la freccina che indica che la PR che hai fatto ieri è stata inclusa in gh-pages (eppure una volta ha funzionato).
Quindi, penso che il codice sia stato integrato, ma GitHub non considera che le due branch siano state allineate. In effetti, stiamo lavorando su quattro repository distinti:
1 - il repository mio locale sul mio computer
2 - il repository mio remoto su GitHub
https://github.com/DarwinNE/FidoCadJ.git3 - il repository tuo locale sul tuo computer
4 - il repository tuo remoto su GitHub
https://github.com/MigthyThor/FidoCadJ.gitQuando tu fai un git branch -a, lui ti mostra tutte le branch che hai attive sul tuo repository locale. Per esempio, adesso io ho:
- Codice: Seleziona tutto
[davidebucci@davide-bucci-portable-2]$ git branch -a
* gh-pages
master
remotes/origin/HEAD -> origin/master
remotes/origin/gh-pages
remotes/origin/master
[davidebucci@davide-bucci-portable-2]$
sto lavorando in locale su gh-pages e quindi git mi aggiunge un asterisco a sinistra.
Se ho capito bene, bisogna pensare a remotes/origin/eccetera come delle branch un po' speciali, che di fatto sono dei link al repository su GitHub:
https://git-scm.com/book/it/v2/Git-Bran ... e-BranchesQuindi, per te remotes/origin/gh-pages punterà alla branch gh-pages del repository
https://github.com/MigthyThor/FidoCadJ.git e per me alla branch gh-pages del repository
https://github.com/DarwinNE/FidoCadJ.gitQuando fai i tuoi bravi push o pull, in pratica allinei la tua branch locale con quella distante su GitHub. E non con la mia, il che spiega perché il tuo codice non è aggiornato.
Secondo me e se ci ho capito qualcosa, tu dovresti provare a fare quanto segue:
1 - Crearti intanto una nuova branch in locale per fare qualche prova liberamente, per esempio DarwinNE_gh-pages con
- Codice: Seleziona tutto
git checkout -b DarwinNE-gh-pages
nonappena creata, questa branch sarà allineata alla
tua branch gh-pages, perché finora hai lavorato solo in locale e non ti sei collegato a nessun server.
2 - Fai un pull della
mia branch gh-pages su GitHub:
- Codice: Seleziona tutto
git pull https://github.com/DarwinNE/FidoCadJ.git gh-pages
Il pull funziona così: Git dapprima si collega al server (GitHub), legge il mio repository, cerca la branch gh-pages e si salva tutti i dati tenendoseli da parte (operazione "fetch"). Poi cerca di mischiare insieme i file se ce la fa (operazione merge).
Nel nostro caso, ci saranno dei conflitti, perché il codice mio è diverso dal tuo.
Puoi trovare i conflitti facilmente nei file aprendoli e cercando le linee tipo queste:
- Codice: Seleziona tutto
<<<<<<< HEAD
<p><b>Warning</b>: we are progressively migrating all the FidoCadJ project from SourceForge to GitHub; some links in this website still point to SourceForge pages.</p>
=======
>>>>>>> 292813038851cf37e73642c27285e280ffc6226c
(risulta da un conflitto che ho risolto, in cui nella mia versione c'è una frase che ho aggiunto e che nel tuo commit manca).
3 - Forzi Git a scegliere la mia versione dei file. Ora, vedi le cose dal tuo punto di vista ed immagina di avere un amico immaginario che ti guarda mentre scrivi. Quindi "noi" dal tuo punto di vista siete tu ed il tuo amico immaginario. "Loro" siamo io e Robert che è qui a controllare quello che scrivo io. Se quindi vuoi dirgli di prendere i file miei devi dire "theirs" nel gergo Git:
- Codice: Seleziona tutto
git checkout --theirs download.html
da ripetere per tutti i file per cui ti segnala i conflitti.
4 - Il resto lo immagini: ora nella branch DarwinNE-gh-pages hai una versione che (si spera) dovrebbe essere allineata alla mia. Puoi fare git add e git commit.
In realtà, non sei neanche obbligato a crearti la branch DarwinNE-gh-pages ogni volta, qui serve per fare qualche prova. Infatti, puoi fare git pull direttamente dalla tua gh-pages. Puoi fare un git diff per vederti le differenze fra le due branch.
Però usa il comando con il riferimento al server visto al punto 3 e non un semplice "git pull", altrimenti ti ritrovi con il link che puntano al tuo repository remoto e non al mio.
Fammi sapere, puoi provare finché vuoi e ritornare all'ultimo tuo commit con
- Codice: Seleziona tutto
git reset --hard
ed eliminare una branch con:
- Codice: Seleziona tutto
git branch -d nome_branch_da_eliminare
Boh, non proprio facilissimo, ma credo che una volta digerita la filosofia non sia poi una cosa così terribile.
Fai una cosa, salva questa risposta da qualche parte, casomai ci servisse da aggiungere nelle Wiki, temo sarà un argomento ricorrente.
Se ho cannato qualcosa (è da poco che uso Git), fammi sapere che cerchiamo poi di correggere.
Cheers,
D.