È ansible fare un git merge
, ma senza commit?
“man git merge” dice questo:
With --no-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing.
Ma quando provo a usare git merge
con il --no-commit
, comunque si auto-commette. Ecco cosa ho fatto:
$> ~/git/testrepo$ git checkout master Switched to branch 'master' $> ~/git/testrepo$ git branch * master v1.0 $> ~/git/testrepo$ git merge --no-commit v1.0 Updating c0c9fd2..18fa02c Fast-forward file1 | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) $> ~/git/testrepo$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean)
Un successivo git log
rivela tutti i commit dal ramo v1.0 fuso in master.
Nota l’output mentre fai l’unione: sta dicendo Fast Forward
In tali situazioni, vuoi fare:
git merge v1.0 --no-commit --no-ff
Stai fraintendendo il significato della fusione qui.
Il --no-commit
impedisce che MERGE COMMIT si verifichi e ciò accade solo quando si uniscono due storie di rami divergenti; nel tuo esempio non è il caso dato che Git indica che si trattava di un’unione “avanti veloce” e quindi Git applica solo i commit già presenti sul ramo in sequenza.
Se vuoi solo commettere tutte le modifiche in un commit come se ti stessi digitando, anche lo stesso –squash
$ git merge --squash v1.0 $ git commit
Preferisco così, quindi non ho bisogno di ricordare nessun parametro raro.
git merge branch_name
Quindi dirà che il tuo ramo è avanti con # commit, puoi ora distriggersre questi commit e inserirli nelle modifiche di lavoro con quanto segue:
git reset @~#
Ad esempio se dopo l’unione è 1 commit avanti, usa:
git reset @~1