Skip to main content

Daily Git Workflow

This example describes a typical day using Git Connectivity in Flowable Design. It follows a modeler working on an app with a small team, illustrating the common operations you'll perform regularly.

Starting Your Day

Pull the Latest Changes

Before starting work, pull the latest changes from the remote repository to make sure you have the most recent version of all models.

  1. Open your app in Flowable Design.
  2. Check the Git panel's sync status. If it shows "Behind remote", there are new changes from your team.
  3. Click Pull to fetch and apply those changes.
  4. Review what changed by checking the commit history if needed.

This ensures you're working on the latest version and reduces the chance of conflicts later.

Making Changes

Edit Models and Track Changes

As you work throughout the day, the Git panel tracks your modifications:

  1. Open a model (e.g., a BPMN process) and make your changes in the editor.
  2. Save the model.
  3. The Git panel's sync status updates to show "Local changes".
  4. The changed models list in the Git panel shows which models you've modified.

Commit Regularly

Rather than waiting until the end of the day, commit your changes in logical units:

  1. Click Commit in the Git panel.
  2. Select the models related to a single change (e.g., "the updated approval process and its new form").
  3. Write a descriptive commit message:
    • Good: "Add manager approval step for purchase orders over $5,000"
    • Avoid: "Updated process"
  4. Confirm the commit.
tip

Frequent, focused commits make it easier to understand the history, revert specific changes if needed, and resolve conflicts with teammates.

Pull Periodically

Even while working, pull periodically to stay in sync:

  1. Before starting a new piece of work, check for remote changes.
  2. If changes are available, pull them before making new modifications.
  3. This keeps the divergence between your local state and the remote small and manageable.

Working on a Feature

Create a Feature Branch

For larger changes that span multiple models or require review before merging:

  1. Click Create Branch in the Git panel.
  2. Name the branch descriptively (e.g., feature/customer-onboarding-v2).
  3. Work on the branch, committing changes as you go.

Create a Pull Request

When the feature is ready for review:

  1. Ensure all changes are committed.
  2. Click Create PR in the Git panel.
  3. Select main (or your target branch) as the merge target.
  4. Write a title and description for the pull request.
  5. Review the PR preview to confirm all expected changes are included.
  6. Create the pull request.
  7. Share the PR link with your team for review.

After the PR is Merged

Once the pull request is approved and merged on GitHub/GitLab/Bitbucket:

  1. Switch back to the main branch in the Git panel.
  2. Pull to get the merged changes.
  3. Your feature is now part of the main branch.

Handling Conflicts

Resolve During Pull

If you pull and conflicts are detected:

  1. Design shows the conflicting models with their local and remote versions side by side.
  2. For each conflict, review the diff and choose which version to keep.
  3. Confirm the resolutions to complete the pull.

Stash Before a Risky Operation

If you're unsure whether a pull will cause conflicts:

  1. Stash your uncommitted changes first.
  2. Pull the remote changes cleanly.
  3. Restore the stash to reapply your changes on top of the updated state.
  4. Resolve any conflicts that arise during the stash restoration.

End of Day

Commit or Stash Remaining Work

Before ending your day:

  • If changes are ready: Commit them with a descriptive message.
  • If changes are incomplete: Either commit to a feature branch with a "WIP" prefix in the message, or stash the changes for tomorrow.

Avoid leaving uncommitted changes overnight without stashing, as pulling the next morning could lead to unexpected conflicts.

Summary of Daily Operations

WhenActionPurpose
Start of dayPullGet latest team changes
During workEdit and save modelsNormal modeling work
After a logical changeCommit (selected models)Track progress, share with team
PeriodicallyPullStay in sync
For larger featuresCreate branch, commit, create PRIsolated work with review
End of dayCommit or stashPreserve work in progress