Perché non commettere immediatamente modifiche unite?

15

Il mio ufficio utilizza Git e SourceTree per il controllo della versione. Ciò è avvenuto perché quando mi sono iscritto c'era il controllo della versione zero e SourceTree era l'unico sistema che avessi mai usato. Non sono un esperto in alcun modo, ma sono il più esperto dei miei colleghi, quindi sono l'esperto di fatto che insegna a tutti di utilizzare correttamente Git e di correggere eventuali errori che stanno facendo.

Sto facendo un documento tutorial che passa attraverso Git e SourceTree e spiega ogni fase del processo. Nel processo Pull, la finestra di dialogo SourceTree ti consente di selezionare l'opzione "Conferma modifiche unite immediatamente". Capisco cosa fa e perché è utile. Quello che non capisco è perché qualcuno non desidera utilizzare questa funzione.

Qualcuno potrebbe spiegare perché non vorrai mai che le tue modifiche unite vengano commesse automaticamente? Sto cercando di capire il ragionamento in modo da poter spiegare meglio l'utilità della funzione e avere un'idea di quali trabocchetti dovresti cercare in futuro.

Modifica: non credo che la mia domanda sia un duplicato della domanda collegata. La domanda collegata chiede in generale quanto spesso impegnarsi. Sto chiedendo perché si dovrebbe scegliere di non utilizzare una funzione specifica relativa al commit delle unioni in SourceTree.

    
posta David K 19.01.2018 - 22:09
fonte

3 risposte

26

Non vorrei usare questa funzione.

Il fatto che non ci siano conflitti vuol dire che le modifiche che vengono unite nel mio ramo non sono approssimativamente nelle stesse linee di codice di quelle che ho creato. Ciò non significa che tali modifiche siano compatibili con le mie modifiche. Ciò non significa che il codice verrà compilato, o che il codice funzionerà, o che i test passeranno.

In altre parole, usando questa opzione potenzialmente finisco con un commit spurio di codice che potrebbe non essere in buono stato e che richiede un nuovo commit da correggere. Dato che sto facendo questo lavoro comunque, e come non dovrei mai spingere a monte questo spurio, nemmeno per sbaglio (Dio non voglia, qualcuno potrebbe quindi unire quello in qualche altro ramo!), Non vedo alcun motivo per creare questo commit in primo luogo.

    
risposta data 20.01.2018 - 00:53
fonte
2

Dopo l'unione, potrebbero esserci delle modifiche ai file nel repository locale. Queste modifiche non vengono automaticamente applicate al locale, a meno che non imposti "Conferma le modifiche immesse immediatamente".

Se non si imposta questa opzione, i file vengono visualizzati in SourceTree come modifiche non vincolate.

Questo perché Git stesso non esegue il commit a meno che non lo dici esplicitamente a, e SourceTree è una GUI Git. L'opzione "Conferma le modifiche apportate immediatamente" opzione non è tanto un'opzione, quanto un comando scorciatoia.

Quindi, il motivo per non che vuoi usare questa funzione è evidente: vuoi eseguire il commit manualmente, o non farlo affatto.

Supponiamo che tu spinga il master nel tuo ramo delle funzionalità. Un collega lavora su un ramo di funzionalità diverso. Questo collega ha una storia di cose da rompere. L'unione contiene le modifiche al codice comune condiviso creato da questo collega. Quindi, tu - insieme al resto del team - non commetti modifiche unite fino a quando non sei sicuro che non ci siano modifiche apportate da questo collega che influirà sul tuo lavoro.

Solo perché non c'è una buona ragione - in teoria - per non utilizzare questa funzione, in realtà, ci possono essere un numero qualsiasi di buone ragioni. Per quanto riguarda il tuo tutorial, vorrei solo dire che "99 volte su 100, questa è l'opzione che vuoi usare". Non penso che tu abbia davvero bisogno di entrare nei dettagli per non usarlo, specialmente se gli altri sono nuovi al controllo della versione. Tutto dipende da quanto approfondito intendi per il tutorial.

    
risposta data 20.01.2018 - 17:45
fonte
2

Se utilizzi un hook post commit per inviare automaticamente i tuoi commit (come in link ), potresti ha bisogno di questa opzione per evitare di spingere qualche impegno di dubbia qualità.

Non lo userei mai.

    
risposta data 22.01.2018 - 19:46
fonte

Leggi altre domande sui tag