Some reasons, why we now sometimes run into git issues
main
as the default branch)(if required) Install Git on user machine
💡 check installation via git --version
in a fresh command line / terminal / powershell window
navigate to the ARC in trouble (via one of many options below)
cd path/to/ARC
💡 This is not an exhaustive trouble-shooting list. In most cases git and search machines are your friends. Most Git error messages (displayed in the command line or inside ARCitect) include helpful commands to solve the problem or can easily be searched for in the internet.
error message* | possible reason | possible solution |
---|---|---|
remote: HTTP Basic: Access denied fatal: Authentication failed for 'https://gitlab.nfdi4plants.de/UserName/ARCname' |
Your computer is not "linked" to your DataHUB account | Access Denied |
error: failed to push some refs to 'https://gitlab.nfdi4plants.de/UserName/ARCname' hint: Your push was rejected due to missing or corrupt local objects. |
You tried to upload LFS-tracked files that are not present on your computer | Git-LFS |
error: failed to push some refs to 'https://gitlab.nfdi4plants.de/UserName/ARCname' hint: Updates were rejected because the remote contains work that you do not have locally. |
Your local ARC is out of sync with the remote. | ARC not in sync with the DataHUB |
ERROR: Can not sync with remote as no remote repository address was specified. |
There is no URL specified for your ARC's remote | Git remote |
ERROR: GIT: fatal: repository 'https://gitlab.nfdi4plants.de/UserName/ARCname.git' not found |
The remote URL does not exist | Git remote |
ERROR: GIT: fatal: detected dubious ownership |
This is an error typically seen when working on mounted network drives | Dubious ownership |
fatal: credential-cache unavailable; no unix socket support |
Likely happens on Windows, if a gitconfig credential.helper=cache |
Adjust the Git Credential helper setting |
fatal: Need to specify how to reconcile divergent branches. |
Your ARC contains multiple branches that progressed independently and need to be merged | Contact a data steward. |
error: unable to create file <path/to/file> : Filename too long |
Likely occurs on Windows, if your ARC is stored in a deeply nested folder, i.e. a folder in a folder in a folder ... | Store the ARC on a higher level. |
💡 *typically displayed during synchronization via ARCitect (DataHUB Sync --> push / pull) or arc sync
. Even if ARCitect shows "Complete", it's sometimes worth it to scroll up and see these errors.
Whenever your asked for ARC support likely related to a git issue, the first thing you want to explore is the state of the ARC.
To get a good summary of the ARC including
If everything's clear and committed, this should prompt something like
Your branch is up to date with ... nothing to commit, working tree clean
Now, to compare the status of the local clone vs. that of the remote (i.e. the DataHUB) with a bit more confidence and wording, use
This displays the commit history (messages) of the ARC reverse-chronologically, i.e. top-most = latest. So if the top commit message of the local ARC is different from the last commit message displayed in the DataHUB, the ARC is out of sync.
If you like it prettier, remember "a dog"...
Hit qto close the log.
The gitconfig is basically the settings and preferences for your git installation. There are three types of gitconfigs. Depending on the tool (ARCitect, ARC Commander) and operating system (macOS, Linux, Windows), different git settings may be received from different config files.
flag | meaning |
---|---|
--global | current user on that computer |
--system | system-wide (all users) |
--local | current repository (ARC) |
The following command lists all configurations and where they originate (--show-origin) from and what there scope is (--show-scope).
💡 The output will be different depending on wether you are inside or outside an ARC (git repository).
In order to only show e.g. the global gitconfig use
Typical settings to explore and trouble-shoot
init.defaultbranch=main
user.name
and user.email
should be definedcredential.helper
.Editing the respective gitconfig is ideally done via command line (quick internet search helps).
💡 One could edit the file (listed in git config --list --show-origin
) via a text editor. However, this is rather error-prone.
The gitconfig contains a setting, whether and how to save git credentials on your machine called credential.helper
.
On Windows, you might run into the error fatal: credential-cache unavailable; no unix socket support
, if it is set to credential.helper=cache
.
This can be solved by either of the following:
git config --global --unset credential.helper
.git config --global credential.helper store
.💡 If you use ARC commander, we recommend to use the second approach to keep storing your credentials for DataHUB synchronization.
For ARCs the "remote" is the DataHUB. The remote address (ARC url) is stored in the git of the local ARC. Display the URL, to which the local ARC is connected via
A default remote is usually added by ARC Commander or ARCitect.
If the ARC does not yet exist in the DataHUB, and you created it via ARC Commander and synced it via arc sync
, you will see this error:
This is not to worry about, the ARC was created in the DataHUB during this process.
If you only see the error ERROR: GIT: fatal: repository 'https://gitlab.nfdi4plants.de/UserName/ARCname.git/' not found
, but not the following lines mentioning that the ARC was created automatically, make sure to use the "force", i.e. arc sync --force ...
.
If above command does not display any remote, you can add one via
You can edit a remote via
As of now, the DataPLANT tools focus on working on a single branch (main
).
It can still happen that your ARC has multiple branches e.g. by accident (see git config
--> init.defaultbranch
) or because some git-affine collaborator knows how to create them.
To display the branches of the local ARC, use
💡 the current branch is marked with an asterisk (*) to the left
If you also want to display branches that exist on the remote (but not locally), use
A common source for issues are multiple programs that work on the ARC in parallel.
In particular, working on the ARC with multiple softwares that have Git integration may lead to confusion. For instance, while you sync the ARC using ARCitect or ARC Commander, the changes may still be displayed as un-committed in VSCode, RStudio, PyCharm or other third-party software.
Many softwares produce hidden temporary files. By default these files are not shown or synced by the ARCitect or ARC Commander. They might still sometimes lead to confusion, e.g. not being able to commit changes. This is especially the case for office software (Excel, Word, LibreOffice, etc.), where e.g. one of the ISA files (isa.investigation.xlsx
, isa.study.xlsx
, isa.assay.xlsx
) or another office file stored in the ARC may be open. However, also ARCs opened in Windows Explorer or macOS Finder sometimes led to issues.
Before syncing an ARC, close all ARC-files and Explorer / Finder windows
Avoid to edit, delete, or move files, while the ARC is being synced to the DataHUB
Your local ARC is likely out of sync with the remote. This happens, if you or an invited colleague work(s) on the same ARC from a different location (e.g. the DataHUB or another computer). Before working on your ARC, make sure to update the local clone via one of these
arc sync
git pull
(-> this would also prompt a message if changes need to be merged)Sometimes you run into permission issues such as
This is due to missing or outdated DataHUB credentials on your computer. It usually helps to just retrieve new ones. If not, you might have to remove existing credentials stored on your computer.
Option 1: via ARC Commander
Option 2: "by hand"
api
arc sync
, git pull
) to trigger being asked for git credentials
If (new) authentication alone does not help, you might need to delete existing tokens or passwords first.
Run git config --get-regexp "credential"
to find out whether and where credentials are stored
This typically displays one of the following
credential.helper store
credential.helper osxkeychain (only on macOS)
If credential.helper store
is displayed, the credentials are typically stored in ~/.git-credentials
, a hidden text file stored in the user's home folder. Edit this file and delete the row(s) containing "git.nfdi4plants.org" (https://<UserName>:<Token>@git.nfdi4plants.org
).
On macOS (if credential.helper osxkeychain
is displayed) open the app "Keychain Access", search and delete passwords for "git.nfdi4plants.org".
The error ERROR: GIT: fatal: detected dubious ownership
typically occurs when working on a mounted network drive (Fileshare, File Server, NAS). Very simplified: the user on the computer and the owner of the network drive differ and git tries to safe you from working in a folder you do not own.
You can add the path to the ARC to the list of safe directories via the command
You can circumvent this error by adding all directories to your list of safe directories via the command
⚠️ This might however pose a safety risk. Please read the details here: https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-safedirectory
Git LFS is basically the system in the back to simplify working with git and (ARCs containing) large data files. ARC commander and ARCitect offer options to download (clone) an ARC without large files; speeding up the process and avoiding waste of data storage, if you are only interested e.g. in the metadata.
If you have downloaded (cloned) an ARC without large files and try to upload it to a new location (i.e. new remote due to a transfer to other user, group, etc.), you will see the following or similar error
In this case you would have to download all LFS objects from the original remote first → ask a data steward for help.
Done in small steps plus capturing log
To get a list of LFS-tracked files including the size of the original file, run
This will display the object ID (oid), the relative path to the file and the object size. The oid is also stored in the pointer file at the file's position.
💡 If checked-out and downloaded, a file with an oid 77080c4dc5820ede3e992e8116772ae6ec6ba6096e05df4e49fbb5f0665544b2
would be in the folder .git/lfs/objects/77/08/
. So the first 4 characters of the OiD are split into two subfolders of .git/lfs/objects/
(i.e. /77/08/
).
To get a report of all LFS-tracked files including there status, use
Amongst others, this report will print for every LFS file, whether it is downloaded (checkout: true; download: true
) to the local ARC or not (checkout: false; download: false
).
To help troubleshooting add (some or all) variables GIT_CURL_VERBOSE=1 GIT_TRACE=1 GIT_TRACE_PACKET=1
before your git command to get more info, e.g.