The NetBeans IDE provides support for the Git version control client. The IDE's Git support allows you to perform versioning tasks directly from your project within the IDE. This document demonstrates how to perform basic versioning tasks in the IDE by guiding you through the standard workflow when using versioning software.
Git is is a free and open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. Git is used for version control of files, much like tools such as Mercurial, Subversion, CVS, Perforce, etc.
Editing Files
Once you have a Git versioned project opened in the IDE, you can begin
making changes to sources. As with any project opened in NetBeans IDE, you can
open files in the Source Editor by double-clicking on their nodes, as they
appear in the IDE's windows (e.g., Projects (Ctrl-1), Files (Ctrl-2), Favorites
(Ctrl-3) windows).
When working with source files in the IDE, there are various UI components at your disposal, which aid in both viewing and operating version control commands:
Viewing Changes in the Source Editor
When you open a versioned file in the IDE's Source Editor, you can view real-time changes occurring to your file as you modify it against the base version from the Git repository. As you work, the IDE uses color coding in the Source Editor's margins to convey the following information:
| Blue
( ) |
Indicates lines that have been changed since the earlier revision. |
| Green
( ) |
Indicates lines that have been added since the earlier revision. |
| Red
( ) |
Indicates lines that have been removed since the earlier revision. |
The Source Editor's left margin shows changes occurring on a line-by-line basis.
When you modify a given line, changes are immediately shown in the left margin.

Note: You can click on a color grouping in the margin to call versioning commands. For
example, the picture below shows widgets available to you when clicking
a red icon which indicates that lines have been removed from your local copy:

The Source Editor's right margin provides you with an overview that displays
changes made to your file as a whole, from top to bottom. Color coding is
generated immediately when you make changes to your file.

Note: You can click on a specific point within the margin to bring your
inline cursor immediately to that location in the file. To view the number of
lines affected, hover your mouse over the colored icons in the right margin:

Viewing File Status Information
When you are working in the Projects (Ctrl-1), Files (Ctrl-2), Favorites
(Ctrl-3), or Versioning views, the IDE provides several visual features
that aid in viewing status information about your files. In the example
below, notice how the badge (e.g.
), color of the file name, and adjacent status
label, all coincide with each other to provide you with a simple but
effective way to keep track of versioning information on your files:

Badges, color coding, file status labels, and perhaps most importantly,
the Git Diff Viewer all contribute to your ability to effectively
view and manage versioning information in the IDE.
Badges and Color Coding
Badges are applied to project, folder, and package nodes and
inform you of the status of files contained within that node:
The following table displays the color scheme used for badges:
Blue Badge
( ) |
Indicates the presence of files that have been modified, added or
deleted in your working tree. For packages, this badge applies only to the package itself and
not its subpackages. For projects or folders, the badge indicates changes
within that item, or any of the contained subfolders. |
Red Badge
( ) |
Marks projects, folders or packages that contain conflicting
files. For packages, this badge applies only to the package
itself and not its subpackages. For projects or folders, the badge
indicates conflicts within that item, or any of the contained subfolders. |
Color coding is applied to file names in order to indicate their current
status against the repository:
| No specific color (black) |
 |
Indicates that the file has no changes. |
| Blue |
 |
Indicates that the file has been locally modified. |
| Green |
 |
Indicates that the file has been locally added. |
| Red |
 |
Indicates that the file is in a merge conflict. |
| Gray |
 |
Indicates that the file is ignored by Git and will not
be included in versioning commands (e.g. Update and Commit). Files
cannot be ignored if they are versioned. |
File Status Labels
The IDE displays two status values for a file:
- A status describing differences between the files Working Tree and Index state,
- A status describing differences between the files Index state and current HEAD commit.
File status labels provide a textual indication of the status of versioned
files in the IDE's windows:
| - |
Unmodified |
| A |
Added |
| U |
Updated but unmerged |
| M |
Modified |
| D |
Deleted |
| I |
Ignored |
| R |
Renamed |
By default, the IDE displays status (new, modified,
ignored, etc.) and folder information in gray text to the right of files, as
they are listed in windows.

File(s) in merge conflict feature the unmerged status that is generally annotated by red color until the file(s) is not resolved by your explicit action. The status label for unmerged file(s) depends on the scenario (e.g., A/A - unmerged, both added).
File status labels can be toggled on and off by choosing
View > Show Versioning Labels from the main menu.
Git Versioning View
The Git Versioning view provides you with a real-time list of all
of the changes made to files within a selected folder of your local working
tree. It opens by default in the bottom panel of the IDE, listing added,
deleted or modified files.
To open the Versioning view, select a versioned file or folder (e.g. from
the Projects, Files, or Favorites window) and either choose Git >
Show Changes from the right-click menu, or choose Team > Git > Show Changes
from the main menu. The following window appears in the bottom of the IDE:

By default, the Versioning view displays a list of all modified files within
the selected package or folder in your Working Tree. Using the buttons in the toolbar, you can choose to display the list of files which have differences either between Index and HEAD, Working Tree and Index or Working Tree and HEAD. You can also click the column headings
above the listed files to sort the files by name, status or location.
The Versioning view toolbar also includes buttons that enable you to invoke
the most common Git tasks on all files displayed in the list. The
following table lists the Git commands available in the toolbar of the
Versioning view:
 |
Changes between HEAD and Working Tree |
Displays a list of files that are either already staged or only modified/created and not staged yet. |
 |
Changes between HEAD and Index |
Displays a list of files that are staged. |
 |
Changes between Index and Working Tree |
Displays files that have differences between their staged and Working Tree states. |
 |
Refresh Statuses |
Refreshes the status of the selected files and
folders. Files displayed in the Versioning view can be
refreshed to reflect any changes that may have been made
externally. |
 |
Open Diff |
Opens the Diff Viewer providing you with a side-by-side
comparison of your local copies and the versions maintained in the
repository. |
 |
Revert Modifications |
Displays the Revert Modifications dialog box. |
 |
Commit Changes |
Displays the Commit dialog box. |
You can access other Git commands in the Versioning view by selecting a table
row that corresponds to a modified file, and choosing a command from the right-click menu:

Comparing File Revisions
Comparing file versions is a common task when working with versioned projects. The IDE enables you to compare revisions by using the Diff command:
- Select a versioned file or folder (e.g. from
the Projects, Files, or Favorites window).
- Choose Team > Diff
from the main menu.
A graphical Diff Viewer opens for the selected file(s) and revisions in the IDE's main window. The Diff Viewer displays two copies in side-by-side panels. The more current copy appears on the right side, so if you are comparing a repository revision against your working tree, the working tree displays in the right panel:

The Diff Viewer makes use of the same color coding used elsewhere to display version control changes. In the screen capture displayed above, the green block indicates content that has been added to the more current revision. The red block indicates that content from the earlier revision has been removed from the later. Blue indicates that changes have occurred within the highlighted line(s).
The Diff Viewer toolbar also includes buttons that enable you to invoke
the most common Git tasks on all files displayed in the list. The
following table lists the Git commands available in the toolbar of the
Diff Viewer:
 |
Changes between HEAD and Working Tree |
Displays a list of files that are either already staged or only modified/created and not staged yet. |
 |
Changes between HEAD and Index |
Displays a list of files that are staged. |
 |
Changes between Index and Working Tree |
Displays files that have differences between their staged and working tree states. |
 |
Go to Next Difference |
Displays next difference in the file. |
 |
Go to Previous Difference |
Displays previous difference in the file. |
 |
Refresh Statuses |
Refreshes the status of the selected files and
folders. Files displayed in the Versioning window can be
refreshed to reflect any changes that may have been made
externally. |
 |
Revert Modifications |
Displays the Revert Modifications dialog box. |
 |
Commit Changes |
Displays the Commit dialog box. |
If you are performing a diff on your local copy in the Working Tree, the IDE enables you to
make changes directly from within the Diff Viewer. To do so, you can either
place your cursor within the right pane of the Diff Viewer and modify your file
accordingly, otherwise make use of the inline icons that display adjacent to
each highlighted change:
 |
Replace |
Inserts the highlighted text into your Working Tree copy. |
 |
Move All |
Reverts the whole local Working Tree copy. |
 |
Remove |
Removes the highlighted text from the local Working Tree copy. |
Reverting Changes
To throw away local changes made to selected files in your Working Tree and replace those files with the ones in the Index or HEAD:
- Select a versioned file or folder (e.g. from the Projects, Files, or Favorites window).
- Choose Team > Revert Modifications from the main menu.
The Revert Modifications dialog box displays.

- Specify additional options (e.g., Revert only Uncommitted Changes in Index to HEAD) .
- Click Revert.
The IDE replaces the selected files with those specified in step 3 above.
Committing Sources to a Repository
To commit files to the Git repository:
- In the Projects window, right-click the file(s) you want to commit.
- In the context menu, choose Git > Commit.
The Commit dialog box displays.
The Commit dialog box contains the following components:
- Commit Message text area intended for describing the change being committed
- Author and Commiter drop-down lists that allow to differentiate between those who made the change and who physically committed the file if necessary.
- Files to Commit section that lists:
- all files modified,
- all files that have been deleted in the Working Tree (locally),
- all new files (i.e. files that do not yet exist in the Git repository),
- all files that you have renamed.
Two toggle buttons that switch the mode in which the actual commit is to be performed are available here:
 |
Changes between HEAD and Index |
Displays a list of files that are staged. |
|
Changes between HEAD and Working Tree |
Displays a list of files that are either already staged or only modified/created and not staged yet. |
Note: To specify here whether to exclude
individual files from the commit, either deselect the checkbox in the first column called Commit or right-click a file row in the Commit Action column and choose Exclude from commit from the pop-up menu. To display the Diff Viewer here, right-click a file row in the Commit Action column and choose Diff from the pop-up menu.
- Update Issue section intended for tracking issues related to the change being committed.
Note: You need to install the JIRA or Subversion plugin to start tracking issues in the IDE.
- Type in a commit message in the Commit Message text area. Alternatively, you can do any of the following:
- click the Recent Messages (
) icon located in the upper right corner to
view and select from a list of messages that you have previously used,
- click the Load Template (
) icon located in the upper right corner to select a message template.
- After specifying actions for individual files, click Commit.
The IDE
executes the commit and stores your snapshots to the repository.
The IDE's status bar, located in the bottom right of the interface,
displays as the commit action takes place. Upon a successful commit,
versioning badges disappear in the Projects, Files and Favorites windows,
and the color coding of committed files returns to black.
Summary
This tutorial showed how to perform basic versioning tasks in the IDE by guiding you through the standard workflow when
using the IDE's GIT support. It demonstrated how to set up a versioned project and perform basic tasks on versioned
files while introducing you to some of the GIT specific features included in the IDE.
See Also
For related material see the following documents: