Crea il ramo (chiamiamolo 'debug'), apporta la modifica e esegui il commit su quel ramo.
git checkout -b debug
vim config # add debug = true
git commit config -m "Turn on debug mode"
Quindi controlla il master e avvia il processo di fusione
git checkout master
git merge --no-ff --no-commit debug
Questo dirà a git di fondersi, creare un vero e proprio commit di merge invece di un forward-forwarding, e mettere in scena il commit ma non ancora impegnarlo. Quindi vai nel file e rimuovi la linea che hai aggiunto sul ramo e infine effettua il commit.
vim config # remove debug=true
git commit
Se esegui gitk master debug
, dovresti vedere che il debug è stato fuso in master, ma il master non ha la modifica di debug=true
. D'ora in poi, quando unirai il ramo di debug al master, git non tenterà di reincorporare il debug=true
perché questo è già stato "unito".
Come altri commentatori hanno affermato, i file di configurazione come questo non dovrebbero essere controllati nel controllo di versione. Il modo più comune per evitare ciò è di fare in modo che l'applicazione controlli un file di configurazione locale che si trova all'esterno della directory di origine o in un file che si trova in .gitignore. Ma se questo non è possibile, le istruzioni sopra funzioneranno.