User Community Service Desk Downloads
If you can't find the product or version you're looking for, visit support.ataccama.com/downloads

Git

This guide describes how to use EGit in ONE Desktop, how to add a repository, make commits, and push them to the remote Git repository.

Introduction to Git and EGit

Git is an open source version control system that enables teams to work cooperatively on the same files. It allows users to work on their own local repositories, and then push their changes to a shared remote repository.

A local repository consists of three trees:

  • Working directory - Holds the actual files with your latest changes on your local machine.

  • Index - Acts as a staging area for changes before they are committed.

  • HEAD - Points to the last commit made.

Once changes are committed they go to the HEAD. From there, they can be pushed to a remote repository.

Branches allow team members to switch between different versions of the same workspace. All changes are tracked by Git. The purpose of a branch is to allow users to work on isolated features of the same files at the same time. Branches can be checked out, merged with one another, and deleted.

EGit is an Eclipse Plugin that is used for integration of Git in ONE Desktop. When you download and install ONE Desktop, EGit plugin is automatically deployed too.

If you need to download EGit plugin again, you can do so from the Eclipse site. For detailed information about the plugin, see Help > Help Contents > EGit Documentation in ONE Desktop or read the EGit documentation online.

Configure EGit

Git commits include the username and email address of the committer. The username and email you set in ONE Desktop should be the same ones you use for your Git account.

  1. Open Preferences > Version Control (Team) > Git > Configuration.

    Configure Egit
  2. Switch to User Settings and select Add Entry.

  3. Enter user.name as Key and your name as Value and confirm.

  4. Select Add Entry again.

  5. Enter user.email as Key and your email address as Value.

    Set username and email

Git configuration

There are three tiers of configuration in ONE Desktop: Local/Repository, Global/User, and System. These are accessed from Window > Preferences > Team > Git > Configuration.

To see all of them with the filename where they are stored, run the following command:

$ git config -l --show-origin

More specific configuration values override the global ones. In the order of priority, this means: Local/Repository > Global/User > System.

To change the configuration, use the command line or edit the files directly. For more information about Git, see the official Git documentation.

Name Value

user.name

The name that appears in Git commit messages.

user.email

The email that appears in Git commit messages.

core.autocrlf

Git can automatically convert line endings between Windows and Linux formats, which might affect your data when working in Linux environments.

core.editor

Default editor for commit messages.

help.autocorrect

Command line Git can help you automatically correct mistakes. In case of multiple solutions, you will be asked for the right one.

diff.tool, merge.tool

You can configure which tools should handle differences and merges. By default, this is done by ONE Desktop.

core.excludesfile

Use this configuration key to define a global .gitignore file.

Create or connect to a repository

There are three ways to add a Git repository in ONE Desktop:

  1. Add an existing local repository: Use this option (Git folder icon with a green plus sign) to use repositories that you already have accessible on your machine or local network.

  2. Clone an existing repository: Connect to an existing repository online (Git folder icon with a yellow arrow).

    Copy and paste the URI (with a .git extension) from a reposiotry online unto the URI field in Clone Git Repository. Other fields will be autopopulated.

    You still, however, need to enter valid credentials (username and password) to access the repository. If two-factor authentication (2FA) is enabled, you need to enter the acces token name and the access token instead.

  3. Create a repository: Enter the location for your new repository (Git folder icon with a yellow plus sign). Optionally, you can create an empty repository at this location.

If you would like to see the repository in your File Explorer, right-click the project in your Git view and select Import Projects.

  • If the repository was used in ONE Desktop before (that is, it contains a .project file), select Import existing Eclipse projects.

    Select Next, choose the project, and select Finish.

  • If the repository was not used in ONE Desktop before, select Import as general project.

    Select Next, give the project a name, and select Finish.

Git actions

You can now start to modify files in your project.

To save changes made in your workspace to your repository, you need to commit them. After changing files in your project, a greater-than sign (>) appears next to the icon, informing you that these files are unstaged (that is, not included in a commit). Any parent folder of this file is marked as unstaged too.

Commit

If you want to commit the changes to your repository, right-click the project (or the files you want to commit) and select Team > Commit in File Explorer. To commit a file, drag it from Unstaged Changes to Staged Changes.

To see the changes made to the file, double-click it.

Enter a commit message in Commit Message. Then select Commit to add the selected files to your local repository.

Commit changes

Push

Pushing a file to the remote repository updates the file in the remote repository with your local version of the file. To push commits on a branch, in File Explorer, right-click your project, then select Team > Push Branch <your_branch>.

Enter the location and name of the remote branch. Finally, provide your Git credentials.

Fetch and pull

Fetching files and pulling is similar, however fetching does not merge files:

  • git fetch updates the status of the files at the remote repository but does not change the files in your workspace.

  • git pull pulls changes from the remote repository and merges and updates the files in your workspace.

Pulling a file updates your local version of the file with the latest version from the remote repository. Pulling can be done while making commits by selecting Commit and Push when committing changes. It can also be done by right-clicking the project and selecting Team > Pull.

Workspace vs index

When we add (git add) the changed files from Workspace (Unstaged mode) to Index (Staged mode), we add marks to files to be added, changed, or deleted by your next git commit, which finalizes those changes into a commit and adds them to your repository’s history.

When files are marked to be modified, they are added to the index file or staging area, which is similar to taking a snapshot of your working copy. After you run git commit, those changes are made permanent, although with Git, commits are not as permanent as they might be in more traditional source control systems.

Revert all local and staged changes

This can be done using a hard reset. If you reset to the current HEAD (typically the last commit on your branch) with the option hard, you reset the currently checked out branch to this commit and overwrite the working tree and the index with the content of HEAD.

You can do this in three ways:

  • Right-click the project and select Team > Reset. Then select HEAD or your current branch and switch to hard.

  • Right-click the project and select Reset on any branch or tag in the Repositories view. Next, decide on the reset type (choose hard here).

  • Right-click the HEAD commit in the history view and select Hard Reset.

Synchronize

Comparisons between your workspace and the local repository or between the current branch and others are done via the Synchronize operation.

To compare your local workspace with the current branch showing uncommitted changes, right-click the project and select Team > Synchronize Workspace.

To compare your current branch with other branches, select Team > Advanced > Synchronized instead. In this case, you can also include local uncommitted changes.

Branch

To create or switch to another branch in a project, in File Explorer, right-click your project and select Team > Switch To. Then choose either New Branch or the name of an existing branch. This creates a new branch in your local repository. If you want it to appear in your remote repository, commit your changes and push the branch.

You can also switch to a new branch by selecting your project in the Git Repositories view, and then Branches > Local. Right-click the branch ypu want to work with and select Checkout.

Merge

To merge one branch into another, in File Explorer, right-click the project and select Team > Merge. Select any branch (other than the branch you were initially working with) and then Merge.

If both branches have committed changes that are not identical, this results in a conflict. Any conflicts must be resolved manually before the merge can be completed.

Conflicts are marked with a sequence of less-than signs (<<<<<<<<) in the associated files.

For example, assume we have two branches:

  • main: This branch has one file called test.txt, which contains only the following text after its last commit:

1

3!
  • mknBranch: This branch has one file called test.txt, which contains only the following text after its last commit:

1

When we try to merge these files, we receive a similar message:

Merge conflict

If you select OK and navigate to test.txt, it now contains the following:

<<<<<<< HEAD
1
3!
=======
1
>>>>>>> refs/heads/mknBranch

Anything prior to the sequence of equals signs (=======) belongs to the branch being merged into (in this case, main), while anything following it belongs to the branch being merged (in this case, mknBranch).

To resolve the conflict, change the file (removing the added >>> notations) and commit it again.

Merging branches does not remove the merged branch, it only ensures that both branches are identical. Delete the merged branch at your discretion.

For more information about resolving Git conflicts, see Resolving a merge conflict using the command line.

If a merge resulted in conflicts that you can’t resolve, you can cancel the merge with a hard reset to the current branch. This can be done in Conflicts and Merged states, that is, before and after you have resolved the conflicts.

In other cases, the merge window displays a fast-forward phrase. Because this commit pointed to by the branch you merged in was directly ahead of the commit you’re on, Git moves the pointer forward.

In other words, when you try to merge one commit with a commit that can be reached by following the first commit’s history, Git simplifies things by moving the pointer forward because there are no changes to merge together. This is called a fast-forward.

For more information about merging, see Git Branching - Basic Branching and Merging.

History view

To view a file history, in File Explorer, right-click a file and select Team > Show in History. This opens the History View, displaying an overview of the commits and allowing you to perform a number of actions (compare, create branches or tags, reset).

Select a commit to the revision comment and details. The revision comment includes the commit parents, children, commit message, and changes, whereas the revision details contain a list of changed files and the actions performed on them (A=ADD, M=MODIFY, D=DELETE).

To quickly find specifics in the revision comment about a particular file, select the file in the revision details.

Git statuses

Files in a Git repository can have one of the following statuses:

  • Ignored: The repository treats these files as if they were non-existent (for example, the bin directory by default). To ignore a file, list it in the .gitignore file or right-click it and then select Team > Ignore.

  • Untracked: Any known but not yet recorded file. To track a file, add it or select the Show untracked files option in the commit wizard and commit it directly.

  • Tracked: Any file known to and recorded by the repository.

  • Added: Any file known to the repository but not yet committed. Perform a Commit to change the file status to tracked.

  • Removed: Any file that should be removed from the repository. Right-click the file, then select Team > Untrack.

    Once you delete it from the workspace, it disappears and no new status icon is shown. The file is removed from the repository with the next commit.

  • Unstaged: Any tracked file with changes that have not yet been added to the index.

  • Staged: Any tracked file with changes that are already included in the index.

  • Partially staged: Any tracked file with changes, out of which some changes are already included in the index and others are not yet added.

  • Conflicted: Any file where the merge result caused a conflict. Resolve the conflicts and perform an Add operation (right-click the file, then select Team > Add to Index) to change the file status.

  • Assume valid: Any modifications are not checked by Git. To activate this option, select Team > Assume unchanged. To turn it off, you must use the command line or run a Reset operation.

Save a project to a remote repository

To push a project into a remote repository, you need to create a project and start a local repository in ONE Desktop. In the next step, you will start a new repository at your Git providing service (such as Gitlab or Github) and then push your files to the remote repository.

How to create a local repository in ONE Desktop

  1. In Model or File Explorer, right-click the project folder and select Team > Share Project.

  2. In Configure Git Repository, enter the path to the folder where you want to place your local Git repository.

Best practices

Creating a repository in the parent folder of your project is not recommended. For more information, see Eclipse EGit help.

Instead, we recommend to create the repository outside of your workspace. Be careful when cloning or creating a repository and make sure you use the Git Sharing Wizard correctly.

Git Share Project
What does NO-HEAD mean?

After creating the local repository, a [NO-HEAD] tag is displayed next to the project in the Git Repositories View in ONE Desktop. That indicates a pointer of your local repository.

Git NO-HEAD

HEAD is a reference to the last commit in the currently checked out branch. The NO-HEAD tag means that, until you make your first add and first commit, you have no branch (not even a main one). Therefore, there is no HEAD referencing any branch and the local repository doesn’t point to any commit.

A small exception to this is the detached HEAD, in which case HEAD is a direct reference to a commit (or a remote branch or a tag). You can think of it as a temporary branch without a name, so instead of having a named branch reference, we only have HEAD. The contents of .git/HEAD will be a SHA1 hash. This occurs most commonly when editing a commit during an interactive rebase.

Even though you can create new commits while not on the branch (that is, to the detached HEAD), this is likely not something you want to do unless you’re an experienced user.

How to create a remote repository in Bitbucket

  1. In Bitbucket, create a new repository.

    Create a new repository in Bitbucket
  2. Enter a name for your repository and description.

  3. Clone the repository by copying the URL:

    Clone the repository
  4. In ONE Desktop, create the repository in Git Repositories view. Right-click Remotes and select Create Remote.

    Create the repository in ONE Desktop
  5. Enter a name for the remote repository, select Configure fetch and then Create.

    Configure the repository in ONE Desktop
  6. To provide connection details for your remote repository, right-click the repository and select Change.

    Remote repository connection settings
  7. Provide the necessary information, then select Dry-Run and Save.

  8. In the Git Staging view, add the files that you want to track and add to the remote repository by dragging them to the Staged Changes area.

  9. Select Commit and Push to commit the staged files to your local repository. Enter a message and then push the files to the remote repository as well. You can select the remote you will push the changes to.

    Push changes to remote

    A main branch is created and you can now see your files at your Git hosting service.

    Changes pushed to remote

Was this page useful?