Git si fondono senza auto commit

È 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