Voglio sincronizzare le modifiche con un Git remotorepository (su GitHub) che utilizza Git Api in Java (Egit e JGit). Come posso fare questo? Questo è possibile conoscendo l'HEAD ID tra due revisioni, o in qualche altro modo?
risposte:
2 per risposta № 1Solo conoscendo il HEAD
di ciascuno dei due repository è sufficiente a dirlose non sono sincronizzati ma non è abbastanza per dirti quale è più avanti dell'altro. Nel caso generale, più di una persona può spingere su un repository, assumendo che il tuo repository locale sia sempre in anticipo rispetto al tuo remoto Non è saggio, dovresti utilizzare l'API per trovare il primo SHA comune e utilizzare ciò che determina come gestire la sincronizzazione dei tuoi repository. Dovrai gestire tre (molto più) casi:
- La tua filiale locale è più avanti del tuo telecomando
- Il tuo telecomando è più avanti del tuo locale
- Il tuo locale e il tuo remoto hanno entrambi set di commit non sull'altro, ad es., Sei stato spinto da un computer ma non hai tirato qui o qualcun altro ha premuto di recente dei commit e non te ne sei accorto, ecc.
I primi due casi sono banali, il terzo è lontanopiù complesso. Dovrai sempre eseguire il pull prima di poter sincronizzare le modifiche locali con il telecomando e il pull potrebbe causare conflitti di unione. Se non si presta attenzione, è possibile interrompere il codice provando a forzare un commit quando si verifica un conflitto.
Senza sapere di più su cosa pensi di fare o quale sia il tuo caso d'uso esatto, non posso darti molto più aiuto di questo. Spero che questo sia abbastanza :-)