GDP Desktop's Git actions are local workspace operations with explicit safety rules. Commit stages a policy-filtered change set, Push commits then pushes without force, Pull is clean-tree fast-forward-only, and Discard is destructive working-tree cleanup rather than GDP Rollback History.
Know what GDP stages for Commit
GDP does not implement Commit as a blind git add -A. Its commit-safe staging path evaluates repository ignore policy, including .gitignore and .gdpignore, removes ignored paths from the index when necessary, stages tracked modifications and deletions with update semantics, and adds allowed untracked paths explicitly.
That distinction matters when a repository contains local-only artifacts. An ignored untracked file should not become part of a GDP commit merely because another source file changed nearby.
Tracked changes and tracked deletions remain distinct from untracked additions.
Ignored untracked files are not silently promoted into the commit.
A previously tracked deletion can remain meaningful even when its parent path is now ignored.
Review the staged/current diff when commit scope matters; do not infer scope from the button label alone.
Separate Commit from Push
Commit creates the local commit. The Desktop Push action uses GDP's commit-and-push flow: it prepares the commit when needed and then pushes the current branch without using force as a recovery shortcut.
If the current branch lacks the expected upstream, GDP can establish a same-branch upstream when that target is safe and unambiguous. Detached HEAD or an unsafe target must not be guessed into a remote destination. If push is rejected after a local commit, the local commit remains evidence and can be reconciled instead of being discarded.
Push success proves Git transport for that push, not that downstream CI passed.
When GitHub Actions watching is enabled, its result is separate check-run evidence after the push.
A rejected push does not justify force-pushing automatically.
Inspect branch/upstream state before retrying a push whose destination is uncertain.
Pull only into a clean, fast-forwardable workspace
GDP's guarded Pull path requires a clean working tree and uses fast-forward-only integration. It should not hide a local merge, rebase, or conflict resolution behind a routine refresh action.
If local changes exist or the branch cannot fast-forward, reconcile that Git state explicitly before pulling again. This keeps incoming remote history separate from local uncommitted work.
A Pull blocker is information about current Git topology. Do not solve it by discarding local work unless discarding that work is itself the intended action.
Treat Discard and Rollback as different recovery tools
GDP Desktop Discard is destructive Git workspace cleanup. Its guarded path resets tracked working-tree/index state to HEAD and cleans untracked files. Use it only when you intentionally want to abandon current local changes.
GDP Rollback History is different. Rollback restores a GDP-managed pre-write safety snapshot for the snapshot's covered paths or working tree. A rollback snapshot can recover a protected GDP write even when the desired recovery point is not simply the current Git HEAD.
Discard is not an undo button for one selected incoming patch.
Discard can remove untracked work; inspect status before using it.
Rollback History has its own explicit snapshot identity and restore confirmation.
After either destructive recovery action, refresh Git status and diff before claiming the workspace is correct.























