Quando `git pull –rebase` mi metterà nei guai?

Capisco che quando uso git pull --rebase , git riscriverà la cronologia e trasferirà i miei commit locali dopo che tutti i commit nel ramo da cui sono appena stato estratto.

Quello che non capisco è come mai questa sarebbe una brutta cosa. La gente parla di mettersi nei guai con git pull --rebase cui si può finire con un ramo da cui le altre persone non possono git pull --rebase . Ma non capisco come sia ansible dal momento che tutto quello che stai facendo è ripetere il tuo commit locale, non ancora pubblico, in cima al ramo da cui sei partito. Quindi, qual è il problema lì?

È solo un problema se hai solo pubblicato (spinto) alcuni dei tuoi commit, perché sarebbero più difficili da unire ad altri repository che hanno già quei commit. Dal momento che il loro SHA1 è cambiato, Git proverà a riprodurli di nuovo su quei repository.

Se non lo hai fatto (spinto di nuovo uno di questi commit), qualsiasi rebase dovrebbe essere sicuro.

Quindi il problema qui è: sei sicuro che tutto il commit locale che stai ridefinendo sia ancora … locale?
E sei sicuro di quello ” git pull --rebase ” dopo ” git pull --rebase “?

Se stai lavorando su un ‘ramo privato’ (un ramo che non hai mai spinto, ma solo unisci o rebase su un ramo pubblico, uno che vuoi spingere), allora sei sicuro di rebase di quel ramo privato ogni volta che vuoi.

Alla fine, tutto dipende dal stream di lavoro di fusione che hai scelto di stabilire .

Impegnarsi in un ramo. Spingere. Unisci un altro ramo (ad esempio stai mantenendo due linee di base, un ramo di patch e un ramo di sviluppo nuovo). Rendi conto che altri commit sono stati trasferiti al ramo del server che il tuo sta monitorando. pull –rebase. Improvvisamente hai rifatto ciascuno dei commit contro il nuovo hash e hai distrutto il commit di merge.

Se nessuno ti ha tirato fuori e non hai spinto i tuoi commit (prima di rebase) da nessun’altra parte, allora stai teoricamente bene. Tuttavia, Git è progettato per gestire bene le fusioni e potresti scoprire che c’è meno lavoro in generale se si estrae e si uniscono invece di pull e rebase.

Ricorda che Git è un sistema di controllo del codice sorgente distribuito . Le persone non devono estrarre dal repository centrale verso cui stai spingendo – in alcuni flussi di lavoro possono estrarre le loro modifiche direttamente da te. In questi casi, riscrivere la cronologia può certamente causare i problemi di cui stai parlando