1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
+++
title = "Sincronizzazione"
date = 2026-11-05T00:00:00Z
description = "Come HardenedPass sincronizza l'archivio con git: quando vengono registrate le modifiche, come fare pull e push, come uscire da un conflitto."
weight = 70
draft = false
+++
Ogni modifica che fai nell'app, come una nuova voce, una correzione o un'eliminazione,
viene subito registrata con un commit git sul telefono. **Al server non arriva nulla
finché non sincronizzi**, a meno che tu non attivi
[Push dopo ogni modifica](#push-dopo-ogni-modifica). Fino ad allora, la modifica esiste
solo su questo telefono.
## Sincronizza
Trascina verso il basso l'elenco per sincronizzare. Puoi usare anche i tre puntini nella
barra di ricerca:
{{< image src="menu.png" alt="Il menu dell'elenco con Sincronizza repository, Pull dal remote, Push sul remote, Impostazioni e Informazioni." class="max-w-sm mx-auto rounded-lg border border-border" />}}
- **Sincronizza repository** scarica le modifiche del server e invia le tue.
- **Pull dal remote** scarica soltanto.
- **Push sul remote** invia soltanto.
Quasi sempre vuoi Sincronizza. Per disattivare il gesto, usa **Disattiva la
sincronizzazione trascinando** nelle
[Impostazioni]({{< relref "/hardenedpass/reference/settings" >}}).
## Push dopo ogni modifica
Attiva **Push dopo ogni modifica** in **Impostazioni**, poi **Repository**, e ogni nuova
voce, correzione, spostamento, rinomina o eliminazione fatta nell'app viene inviata
subito. Così il server resta aggiornato, ed è meno probabile che una modifica fatta da un
computer entri in conflitto con una rimasta sul telefono. Di base è spento.
Tre cose da sapere:
- Le voci salvate con la compilazione automatica non vengono inviate. Restano sul
telefono fino al push o alla sincronizzazione successivi.
- Invia soltanto. Per ricevere le modifiche del server devi comunque sincronizzare.
- Se la chiave SSH è protetta dal blocco schermo, l'app la chiede a ogni modifica.
Se il push non riesce, per esempio senza rete o quando il server ha modifiche più recenti,
l'app mostra `Salvato sul dispositivo, ma push non riuscito. Sincronizza per riprovare`. La
tua modifica è al sicuro in un commit locale: sincronizza appena puoi.
## Quando due dispositivi cambiano la stessa cosa
Se modifichi la stessa voce sul telefono e su un computer prima di sincronizzare, git non
può scegliere un vincitore. L'app usa di default un rebase (**Rebase al pull**), e la
sincronizzazione si ferma con un errore che dice che il pull non è riuscito e che sei in
detached HEAD. Il tuo lavoro non è perso.
Apri **Impostazioni**, poi **Repository**, poi **Configurazione Git locale e utilità**. Hai due vie d'uscita:
### Tieni le tue modifiche
**Interrompi il rebase ed esegui il push su un nuovo branch** annulla il rebase e invia
il tuo lavoro locale su un nuovo branch del server. L'app te ne dice il nome. Poi, su un
computer:
```bash
pass git fetch origin
pass git merge origin/NOME-DEL-BRANCH
```
Git si ferma sulle voci in conflitto. I file cifrati non si possono unire riga per riga,
quindi tieni una versione di ciascuno, completa il merge e rimandalo con `pass git push`.
Sul telefono, chiudi con l'hard reset qui sotto, così il telefono torna uguale al server.
### Butta via le tue modifiche
**Hard reset al remote branch** chiede il nome del branch, poi rende il telefono una
copia esatta di quel branch.
{{< callout type="warning" >}}
Un hard reset scarta i commit e le modifiche locali che non sono su quel remote branch.
Usalo solo quando sei sicuro, o dopo aver messo al sicuro il tuo lavoro con l'opzione qui
sopra.
{{< /callout >}}
## Altri strumenti
La stessa schermata imposta il nome e l'email usati per i commit, mostra la cronologia con
**Mostra registro dei commit** e offre **Esegui la garbage collection** per fare ordine
nel repository locale.
|