GIT richiede di specificare il numero genitore (-m
), perché la stampa commettere ha due genitori e git non sanno da che parte della fusione dovrebbe essere considerato la linea principale. Quindi, utilizzando questa opzione, è possibile specificare il numero genitore (a partire da 1) della linea principale e il selettore di selezione per riprodurre la modifica relativa al genitore specificato.
Per scoprire il vostro commettere genitori, provare uno:
git show --pretty=raw <merge_commit>
o:
git cat-file -p <merge_commit>
o anche per una migliore visibilità GUI, tenta:
gitk <merge_commit>
Come risultato, si dovrebbe ottenere qualcosa come:
commit fc70b1e9f940a6b511cbf86fe20293b181fb7821
tree 8d2ed6b21f074725db4f90e6aca1ebda6bc5d050
parent 54d59bedb9228fbbb9d645b977173009647a08a9 = <parent1_commit>
parent 80f1016b327cd8482a3855ade89a41ffab64a792 = <parent2_commit>
Poi controlla i tuoi ogni dettaglio genitore da:
git show <parent1_or_2_commit>
Aggiungi --stat
per vedere la lista dei file modificati.
o utilizzare il seguente comando per confrontare i cambiamenti (sulla base del genitore di cui sopra):
git diff <parent1_or_2_commit>..<commit>
Aggiungi --stat
per vedere la lista dei file modificati.
o utilizzare il diff combinato per confrontare i due genitori da:
git diff --cc <parent1_commit>
git diff --cc <parent2_commit>
quindi specificare il numero genitore a partire dal 1 per il cherry-pick, per esempio
git cherry-pick -m 1 <merge_commit>
Poi gestita git status
per vedere cosa sta succedendo. Se non vuoi ancora confermare le modifiche, aggiungi l'opzione -n
per vedere cosa succede. Quindi, quando non sei felice, reimposta su HEAD (git reset HEAD --hard
).Se ottieni conflitti di git, probabilmente dovrai risolverli manualmente o specificare la strategia di unione (-X
), vedi: How to resolve merge conflicts in Git?
Per verificare 'git cherry-pick' ha fatto ciò che intendevi fare, esegui' git mostra' prima di spingere; questo ti mostrerà il diff di ciò che sta per essere spinto. – Jimothy
Per quello che vale, il ripristino di un merge commette ha esattamente le stesse considerazioni e l'argomento della riga di comando richiesto per avere successo. – ErikE
E se volessi inserire sia widget-aggiunta che cancellazione-clutter? questo è il punto in cui si sceglie il commit di merge giusto? altrimenti, selezionerei l'ultimo commit dell'aggiunta del widget o l'ultimo commit della cancellazione del clutter invece – Zennichimaro