2014-06-24 10 views
41

Ci scusiamo se questo sembra ridondante poiché so che ci sono molte domande riguardanti Merge vs Rebase, ma sembra che non ci sia alcun lancio di "Branch Default" come bene.Progetto di aggiornamento di Android Studio: Merge vs Rebase vs Branch Default

Viene fornito un caso in cui più persone lavorano su qualcosa (ad esempio un'app Android in Android Studio) contemporaneamente. Qual è l'opzione migliore per aggiornare project/pull se qualcuno spinge al ramo master e vuoi inserire il nuovo master in modo tale che non sovrascriva il lavoro su cui stai ancora lavorando e non devi ancora impegnarlo e spingerlo a padroneggiare? Android Studio elenca "Unisci" "Rebase" e "Branch Default" quando fai clic su "Aggiorna progetto". Da quello che sembra, vorrei fare "Rebase" (seguito da "Merge"?), Ma non ne sono del tutto sicuro.

+0

Tutte le modifiche sono state annullate o sono state apportate modifiche precedentemente commesse ma non inviate? –

+0

Tutte le modifiche su cui un utente ha lavorato non sono supportate; qualsiasi commit sarebbe prontamente seguito da una spinta. –

risposta

30

Stashing

La chiave qui è che avete lavoro non impegnati che si desidera salvare. Prima di provare a unire qualcosa, è necessario stash your changes per salvare le modifiche non salvate e pulire la directory di lavoro.

Eseguire git stash per memorizzare le modifiche. Dovresti quindi essere in grado di estrarre le modifiche senza problemi.

Dopo aver tirato con successo, è possibile eseguire un git stash apply per riapplicare le modifiche apportate prima del pull.

Merging e rebasing

Stashing le modifiche funziona solo se si dispone solo non impegnati modifiche. Se ad un certo punto hai commesso ma non hai spinto dovrai rebase o unire.

This StackOverflow post ha alcune grandi informazioni sulle differenze.

In generale, la fusione è più semplice, ma alcuni ritengono che "inquini" la cronologia git con commit di unione.

Il rebasing richiede un lavoro aggiuntivo, ma dal momento che non si dispone di un merge commit, l'unione si renderà essenzialmente invisibile.

Ancora una volta, nel tuo caso non è necessario unire o rebase. Basta mettere da parte, tirare, quindi applicare la scorta e tutto dovrebbe essere buono.

+0

Voglio renderlo il più semplice possibile (ovvero è necessario che l'IDE di Android Studio sia aperto) Esiste una soluzione che non prevede l'utilizzo di Git Bash e utilizza solo Android Studio? –

+0

Non importa, rileggere e sembra basato sulla tua risposta Voglio selezionare "Unisci" quando tiri se voglio usare semplicemente AS –

+0

Ho scritto una nuova riga: // test, ho eseguito il commit e l'ho spinto, ho confermato che è stato inviato al master, rimosso la // riga di test localmente e provato 'Aggiorna progetto' con Merge and Branch default e la riga non ritornava. Non sono sicuro del motivo per cui non ha estratto il // test line dal master.: X –

5

Non ho trovato la risposta a questa domanda (ovvero il flusso di lavoro) in nessuno dei documenti di Google ... quindi ecco la mia esperienza pratica con Android Studio e Git completamente da un'interfaccia utente.

(I vomitare al pensiero di passare da linea di comando e IDE - significa l'IDE manca!)

  1. Stash le modifiche con: Fare clic destro del progetto -> Git -> Repository -> Stash Modifiche . Dagli un nome.
  2. aggiornamenti Pull che il vostro collega ha fatto con: Fare clic destro del progetto -> Git -> Repository -> Tirare
  3. Unire di nuovo le modifiche di codice con: Fare clic destro del progetto -> Git -> Repository -> UnStash Modifiche -> Applica Stash
  4. Verrà quindi visualizzata l'interfaccia utente "File uniti con conflitti". Qui è dove si seleziona un file e si fondono in modo selettivo.

ATTENZIONE

La fusione manuale "Unisci revisioni" interfaccia utente è TERRIBILE. Una volta provato, vedrai cosa intendo. Buona fortuna cercando di ottenere "Sincronizza Scorrimento" per funzionare davvero. Spero sinceramente che questa interfaccia utente è rivolto entro le prime settimane del 2015.

+1

"L'unione manuale" Unisci revisioni "dell'interfaccia utente è TERRIBILE." Amen – Amalgovinus

9

enter image description here

secondo l'idea IntelliJ documnetatition:

Aggiornamento Tipo

  • Merge: scegliere questa opzione per applicare la strategia di unione. Il risultato è identico a quello di eseguire git fetch ; git merge o git pull --no-rebase.
  • Rebase: selezionare questa opzione per applicare la strategia di rebase. Il risultato è identico a quello di eseguire git fetch ; git rebase o git pull --rebase.
  • Branch Default: selezionare questa opzione per applicare il comando predefinito per il ramo. Il comando predefinito è specificato nella sezione branch.<name> del file di configurazione .git/config.

Pulire albero di lavoro prima dell'aggiornamento

In questa area, specificare il metodo per salvare le modifiche, mentre la pulizia il vostro albero di lavoro prima dell'aggiornamento. Le modifiche verranno ripristinate al termine dell'aggiornamento. Le opzioni disponibili sono:

  • Utilizzando Stash: scegliere questa opzione per avere le modifiche salvate in un Git scorta, in modo da poter applicare le patch con Stashed cambiato anche al di fuori IntelliJ IDEA, perché sono generati da Git si. Utilizzo di
  • Shelve: selezionare questa opzione per salvare le modifiche su uno scaffale. La scaffalatura è un'operazione interna IntelliJ IDEA, le patch generate da da modifiche accantonate vengono normalmente applicate (non scolpite) all'interno di IntelliJ IDEA. È anche possibile applicare modifiche accantonate all'esterno di IntelliJ IDEA ma richiede passaggi aggiuntivi.
Problemi correlati