I’m using Git-1.9.0-preview20140217
for Windows. As I know, this release should fix the issue with too long filenames. But not for me.
Surely I’m doing something wrong: I did git config core.longpaths true
and git add .
and then git commit
. Everything went well. But when I now do a git status
, I get a list of files with Filename too long
, for example:
node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js: Filename too long
It is quite simple to reproduce for me: just create a Yeoman web application with the Angular generator («yo angular») and remove node_modules
from the .gitignore
file. Then repeat the aforementioned Git commands.
What am I missing here?
asked Mar 22, 2014 at 9:14
Papa MufflonPapa Mufflon
16.4k5 gold badges27 silver badges35 bronze badges
6
Git has a limit of 4096 characters for a filename, except on Windows when Git is compiled with msys. It uses an older version of the Windows API and there’s a limit of 260 characters for a filename.
So as far as I understand this, it’s a limitation of msys and not of Git. You can read the details here:
https://github.com/msysgit/git/pull/110
You can circumvent this by using another Git client on Windows or set core.longpaths
to true
as explained in other answers.
git config --system core.longpaths true
Git is build as a combination of scripts and compiled code. With the above change some of the scripts might fail. That’s the reason for core.longpaths not to be enabled by default.
The windows documentation at https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later has some more information:
Starting in Windows 10, version 1607, MAX_PATH limitations have been
removed from common Win32 file and directory functions. However, you
must opt-in to the new behavior.A registry key allows you to enable or disable the new long path
behavior. To enable long path behavior set the registry key at
HKLMSYSTEMCurrentControlSetControlFileSystemLongPathsEnabled
(Type: REG_DWORD)
Grim
3,0659 gold badges55 silver badges117 bronze badges
answered Mar 22, 2014 at 9:24
20
You should be able to run the command
git config --system core.longpaths true
or add it to one of your Git configuration files manually to turn this functionality on, once you are on a supported version of Git. It looks like maybe 1.9.0 and after.
answered Sep 30, 2014 at 0:51
sparkym3sparkym3
12.2k2 gold badges11 silver badges3 bronze badges
13
This might help:
git config core.longpaths true
Basic explanation: This answer suggests not to have such setting applied to the global system (to all projects so avoiding --system
or --global
tag) configurations. This command only solves the problem by being specific to the current project.
EDIT:
This is an important answer related to the «permission denied» issue for those whom does not granted to change git settings globally.
Akif
6,7057 gold badges24 silver badges51 bronze badges
answered Mar 5, 2016 at 10:38
4
Steps to follow (Windows):
- Run Git Bash as administrator (right-clicking the app shortcut will show the option to
Run as Administrator
) - Run the following command:
git config --system core.longpaths true
Note: if step 2 does not work or gives any error, you can also try running this command:
git config --global core.longpaths true
Read more about git config
here.
answered Mar 3, 2018 at 4:50
SaikatSaikat
13k18 gold badges102 silver badges119 bronze badges
1
Create .gitconfig and add
[core]
longpaths = true
You can create the file in a project location (not sure) and also in the global location. In my case the location is C:Users{name}
.
answered Apr 16, 2016 at 11:55
YashYash
6,3544 gold badges35 silver badges26 bronze badges
7
To be entirely sure that it takes effect immediately after the repository is initialized, but before the remote history is fetched or any files checked out, it is safer to use it this way:
git clone -c core.longpaths=true <repo-url>
-c key=value
Set a configuration variable in the newly-created repository; this takes effect immediately after the repository is initialized, but
before the remote history is fetched or any files checked out. The key
is in the same format as expected by git-config1 (e.g.,
core.eol=true). If multiple values are given for the same key, each
value will be written to the config file. This makes it safe, for
example, to add additional fetch refspecs to the origin remote.
More info
answered Dec 1, 2016 at 11:26
WatchmakerWatchmaker
4,6681 gold badge34 silver badges38 bronze badges
0
The better solution is enable the longpath parameter from Git.
git config --system core.longpaths true
But a workaround that works is remove the node_modules folder from Git:
$ git rm -r --cached node_modules
$ vi .gitignore
Add node_modules in a new row inside the .gitignore file. After doing this, push your modifications:
$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push
answered Aug 22, 2016 at 18:44
5
This worked for me
Run as terminal as administrator. And run the command below.
git config --system core.longpaths true
answered Nov 22, 2021 at 6:09
Executing git config --system core.longpaths true
thrown an error to me:
«error: could not lock config file C:Program Files
(x86)Gitmingw32/etc/gitconfig: Permission denied»
Fixed with executing the command at the global level:
git config --global core.longpaths true
answered Dec 20, 2018 at 9:04
Arpit AggarwalArpit Aggarwal
26.6k15 gold badges86 silver badges106 bronze badges
2
- Download & Install Git bash from here: https://git-scm.com/download/win
- Run the git bash gui as administrator and run this command:
git config --system core.longpaths true
- Now clone any repository.
- If the problem is not fixed try this command:
git config --global core.longpaths true
- If it does not help try restarting the windows.
answered Apr 7, 2022 at 3:08
git config --global core.longpaths true
The above command worked for me. Using ‘—system’ gave me config file not locked error
answered Nov 26, 2019 at 14:18
amalik2205amalik2205
3,8061 gold badge13 silver badges20 bronze badges
1
You could also try to enable long file paths.
If you run Windows 10 Home Edition you could change your Registry to enable long paths.
Go to HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem
in regedit
and then set LongPathsEnabled
to 1
.
If you have Windows 10 Pro or Enterprise you could also use Local Group Policies.
Go to Computer Configuration → Administrative Templates → System → Filesystem in gpedit.msc
, open Enable Win32 long paths and set it to Enabled.
answered Sep 3, 2018 at 10:36
Julian VeerkampJulian Veerkamp
1,6142 gold badges17 silver badges20 bronze badges
2
TortoiseGit (Windows)
For anyone using TortoiseGit for Windows, I did this:
(1) Right-click on the folder containing your project. Select TortoiseGit -> Settings.
(2) On the «Git» tab, click the button to «Edit local .git/config».
(3) In the text file that pops up, under the [core] section, add:
longpaths = true
Save and close everything, then re-try your commit. For me, this worked.
I hope this minimizes any possible system-wide issues, since we are not editing the global .gitconfig file, but rather just the one for this particular repository.
answered Dec 4, 2020 at 20:03
RichardRichard
1,82220 silver badges27 bronze badges
In Windows, you can follow these steps which worked for me.
- Open your cmd or git bash as an administrator
- Give the following command either from cmd or git bash which you ran above as an administrator
git config --system core.longpaths true
-
This will allow accessing long paths globally
-
And now you can clone the repository with no issues with long paths
answered Nov 28, 2020 at 5:18
Move repository to root of your drive (temporary fix)
You can try to temporarily move the local repository (the entire folder) to the root of your drive or as close to the root as possible.
Since the path is smaller at the root of the drive, it sometimes fixes the issues.
On Windows, I’d move this to C:
or another drive’s root.
answered Jul 27, 2017 at 12:35
Dheeraj BhaskarDheeraj Bhaskar
18.4k9 gold badges63 silver badges66 bronze badges
1
In a windows Machine
Run Command Prompt as administrator then run below command
git config —system core.longpaths true
answered May 6, 2020 at 4:56
I had this error too, but in my case the cause was using an outdated version of npm, v1.4.28.
Updating to npm v3 followed by
rm -rf node_modules
npm -i
worked for me. npm issue 2697 has details of the «maximally flat» folder structure included in npm v3 (released 2015-06-25).
answered Nov 2, 2015 at 12:25
James GreenJames Green
1,8171 gold badge14 silver badges13 bronze badges
If you are working with your encrypted partition, consider moving the folder to an unencrypted partition, for example a /tmp, running git pull
, and then moving back.
answered Feb 20, 2018 at 22:51
augustowebdaugustowebd
3822 silver badges8 bronze badges
0
1. Purpose
In this post, I would demonstrate how to solve the following error when using git clone
in windows:
2. The reason and solution
2.1 The reason of this problem
Git has a limit of 4096 characters for a filename, except on Windows when Git is compiled with msys. It uses an older version of the Windows API and there’s a limit of 260 characters for a filename.So it’s a limitation of msys and not of Git. You can read the details here: https://github.com/msysgit/git/pull/110.
The root cause of the technical limitation of 260 chars lies within the Windows API. Microsoft’s online article Naming Files, Paths, and Namespaces describes the reasons. Because Git was originally written on Linux, there’s no such limitation. Thus the problem occurs when the original Git code is compiled on the Windows platform.
2.2 The solutions
2.2.1 Solution #1
You can solve this problem by using another Git client on Windows or set core.longpaths
to true
as explained in other answers.
Run the following command (Run as terminal as administrator):
git config --system core.longpaths true
If you encounter this error:
"error: could not lock config file C:Program Files (x86)Gitmingw32/etc/gitconfig: Permission denied"
You can fix the problem by running this:
git config --global core.longpaths true
The limitation to 260 chars in a path is not specific to MSYS, it’s a general Windows API imitation. This can be worked around by using Unicode paths, but that has other drawbacks, which is why core.longpaths
is not enabled by default. Also note that Git for Windows it not compiled against MSYS. Instead, it’s a native Windows application that comes with a stripped-down MSYS environment.
2.2.2 Solution #2
you can Create .gitconfig
and add this:
You can create above file in a project location and also in the global location. In my case the location is C:Users{name}
.
2.2.3 Solution #3
To be entirely sure that it takes effect immediately after the repository is initialized, but before the remote history is fetched or any files checked out, it is safer to use it this way:
git clone -c core.longpaths=true <repo-url>
-c key=value
Set a configuration variable in the newly-created repository; this takes effect immediately after the repository is initialized, but before the remote history is fetched or any files checked out. The key is in the same format as expected by git-config1 (e.g., core.eol=true). If multiple values are given for the same key, each value will be written to the config file. This makes it safe, for example, to add additional fetch refspecs to the origin remote.
2.2.4 Solution #4
You could also try to enable long file paths in windows.
If you run Windows 10 Home Edition you could change your Registry to enable long paths.
Go to HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem
in regedit
and then set LongPathsEnabled
to 1
.
If you have Windows 10 Pro or Enterprise you could also use Local Group Policies.
Go to Computer Configuration → Administrative Templates → System → Filesystem in gpedit.msc
, open Enable Win32 long paths and set it to Enabled.
2.3 The future
Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. However, you must opt-in to the new behavior.
A registry key allows you to enable or disable the new long path behavior. To enable long path behavior set the registry key at HKLMSYSTEMCurrentControlSetControlFileSystem LongPathsEnabled (Type: REG_DWORD)
3. Summary
In this post, I demonstrated how to solve the Filename too long
problem when using git clone
commands, the key point is to understand why the error happens, you can workaround this by using git commands or just alter windows settings to avoid this problem. That’s it, thanks for your reading.
When Bamboo checks out changes from repositories using the Windows Git.exe executable, the task fails and the following appears in the job log
java.lang.RuntimeException : com.atlassian.bamboo.plugins.stash.repository.StashRepositoryException: com.atlassian.bamboo.repository.RepositoryException: Checkout to revision <hash> has failed.command 'C:Program FilesGitcmdgit.exe' checkout -f master failed with code 1. Working directory was [<job working directory>].,
stderr: error: unable to create file <filename>: Filename too long error: unable to create file
According to the msysgit wiki on GitHub and the related fix this error, Filename too long, comes from a Windows API limitation of file paths having 260 characters or fewer.
To resolve this issue, we could change the Windows default 260 character limit in the Windows registry or by configuring the core.longpaths workaround in git config.
The solution applies to the Windows system that runs the build and not necessarily only to the Bamboo Server. If you have Bamboo Remote or Elastic Agents running on Windows, please be mindful that the steps below need to be followed on every agent that could possibly run such builds
Starting in Windows 10 (Windows Server 2016), version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. However, you must opt-in to the new behaviour. We need to set the Windows default 260 character limit by updating the registry as mentioned here.
Go to the registry key ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystemLongPathsEnabled
(Type: REG_DWORD) must exist and be set to 1.
New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlFileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
The git configuration setting can be used for Windows versions lower than 2016 and Windows 10.
This setting is disabled by default by git to prevent users from checking out files that Windows Explorer, cmd/bash or some IDE cannot handle.
For Git configuration run the following command from GitBash or the Git CMD prompt:
git config --system core.longpaths true
This will allow file paths of 4096 characters.
Some users have reported the —system parameter does not work, but the —global one does, which would change the command to:
git config --global core.longpaths true