1GIT-LFS-CONFIG(5)             File Formats Manual            GIT-LFS-CONFIG(5)
2
3
4

NAME

6       git-lfs-config - Configuration options for git-lfs
7

CONFIGURATION FILES

9       git-lfs  reads  its configuration from any file supported by git config
10       -l, including all per-repository, per-user, and per-system Git configu‐
11       ration files.
12
13       Additionally,  a  small  number  of settings can be specified in a file
14       called .lfsconfig at the root of the repository;  see  the  "LFSCONFIG"
15       section for more details. This configuration file is useful for setting
16       options such as the LFS URL or access type for all users of  a  reposi‐
17       tory,  especially  when  these  differ from the default. The .lfsconfig
18       file uses the same format as .gitconfig.
19
20       If the .lfsconfig file is missing, the index is checked for  a  version
21       of  the  file,  and  that is used instead. If both are missing, HEAD is
22       checked for the file. If the repository is bare, only HEAD is  checked.
23       This order may change for checkouts in the future to better match Git´s
24       behavior.
25
26       Settings from Git configuration files  override  the  .lfsconfig  file.
27       This  allows  you to override settings like lfs.url in your local envi‐
28       ronment without having to modify the .lfsconfig file.
29
30       Most options regarding git-lfs are  contained  in  the  [lfs]  section,
31       meaning they are all named lfs.foo or similar, although occasionally an
32       lfs option can be scoped inside the configuration for a remote.
33

LIST OF OPTIONS

35   General settings
36lfs.url / remote.<remote>.lfsurl
37
38           The url used to call the Git LFS remote API. Default blank  (derive
39           from clone URL).
40
41lfs.pushurl / remote.<remote>.lfspushurl
42
43           The  url  used to call the Git LFS remote API when pushing. Default
44           blank (derive from either LFS non-push urls or clone url).
45
46lfs.dialtimeout
47
48           Sets the maximum time, in seconds, that the HTTP client  will  wait
49           to  initiate a connection. This does not include the time to send a
50           request and wait for a response. Default: 30 seconds
51
52lfs.tlstimeout
53
54           Sets the maximum time, in seconds, that the HTTP client  will  wait
55           for a TLS handshake. Default: 30 seconds.
56
57lfs.activitytimeout / lfs.https://<host>.activitytimeout
58
59           Sets  the  maximum time, in seconds, that the HTTP client will wait
60           for the next tcp read or write. If < 1, no activity timeout is used
61           at all. Default: 30 seconds
62
63lfs.keepalive
64
65           Sets  the maximum time, in seconds, for the HTTP client to maintain
66           keepalive connections. Default: 30 minutes.
67
68lfs.ssh.retries
69
70           Specifies the number of times Git LFS will attempt to obtain autho‐
71           rization via SSH before aborting. Default: 5.
72
73core.askpass, GIT_ASKPASS
74
75           Given  as a program and its arguments, this is invoked when authen‐
76           tication is needed against the LFS API. The contents of stdout  are
77           interpreted as the password.
78
79lfs.cachecredentials
80
81           Enables  in-memory SSH and Git Credential caching for a single ´git
82           lfs´ command. Default: enabled.
83
84lfs.storage
85
86           Allow override LFS storage directory. Non-absolute  path  is  rela‐
87           tivized to inside of Git repository directory (usually .git).
88
89           Note: you should not run git lfs prune if you have different repos‐
90           itories sharing the same storage directory.
91
92           Default: lfs in Git repository directory (usually .git/lfs).
93
94lfs.largefilewarning
95
96           Warn when a file is 4 GiB or larger. Such files will  be  corrupted
97           when  using  Windows (unless smudging is disabled) due to a limita‐
98           tion in Git. Default: true.
99
100
101
102   Transfer (upload / download) settings
103       These settings control how the upload and download of LFS  content  oc‐
104       curs.
105
106lfs.concurrenttransfers
107
108           The number of concurrent uploads/downloads. Default 8.
109
110lfs.basictransfersonly
111
112           If  set  to true, only basic HTTP upload/download transfers will be
113           used, ignoring any more advanced transfers that  the  client/server
114           may support. This is primarily to work around bugs or incompatibil‐
115           ities.
116
117           The git-lfs client supports basic HTTP  downloads,  resumable  HTTP
118           downloads  (using  Range headers), and resumable uploads via tus.io
119           protocol. Custom transfer methods can be added via lfs.customtrans‐
120           fer  (see  next section). However setting this value to true limits
121           the client to simple HTTP.
122
123lfs.tustransfers
124
125           If set to true, this  enables  resumable  uploads  of  LFS  objects
126           through  the  tus.io API. Once this feature is finalized, this set‐
127           ting will be removed, and tus.io uploads will be available for  all
128           clients.
129
130lfs.standalonetransferagent
131
132           Allows  the specified custom transfer agent to be used directly for
133           transferring files, without asking the  server  how  the  transfers
134           should  be  made.  The custom transfer agent has to be defined in a
135           lfs.customtransfer.<name> settings group.
136
137lfs.customtransfer.<name>.path
138
139           lfs.customtransfer.<name> is a settings group which defines a  cus‐
140           tom transfer hook which allows you to upload/download via an inter‐
141           mediate process, using any mechanism you  like  (rather  than  just
142           HTTP).  path  should  point  to the process you wish to invoke. The
143           protocol between the git-lfs client and the custom transfer process
144           is   documented   at   https://github.com/git-lfs/git-lfs/blob/mas
145           ter/docs/custom-transfers.md
146
147           name must be a unique identifier that the LFS  server  understands.
148           When  calling  the  LFS  API the client will include a list of sup‐
149           ported transfer types. If  the  server  also  supports  this  named
150           transfer  type, it will select it and actions returned from the API
151           will be in relation to that transfer type (may not  be  traditional
152           URLs for example). Only if the server accepts name as a transfer it
153           supports will this custom transfer process be invoked.
154
155lfs.customtransfer.<name>.args
156
157           If the custom transfer process requires any arguments, these can be
158           provided here. This string will be expanded by the shell.
159
160lfs.customtransfer.<name>.concurrent
161
162           If  true  (the  default),  git-lfs  will invoke the custom transfer
163           process multiple times in parallel,  according  to  lfs.concurrent‐
164           transfers, splitting the transfer workload between the processes.
165
166lfs.customtransfer.<name>.direction
167
168           Specifies which direction the custom transfer process supports, ei‐
169           ther "download", "upload", or "both". The default if unspecified is
170           "both".
171
172lfs.transfer.maxretries
173
174           Specifies  how many retries LFS will attempt per OID before marking
175           the transfer as failed. Must be an integer which is at  least  one.
176           If  the value is not an integer, is less than one, or is not given,
177           a value of eight will be used instead.
178
179lfs.transfer.maxretrydelay
180
181           Specifies the maximum time in seconds LFS will  wait  between  each
182           retry  attempt.  LFS uses exponential backoff for retries, doubling
183           the time between each retry until reaching this limit. If a  server
184           requests  a  delay  using  the Retry-After header, the header value
185           overrides the exponential delay for that attempt and is not limited
186           by this option.
187
188           Must  be  an integer which is not negative. Use zero to disable de‐
189           lays between retries unless requested by a server. If the value  is
190           not  an  integer, is negative, or is not given, a value of ten will
191           be used instead.
192
193lfs.transfer.maxverifies
194
195           Specifies how many verification requests LFS will attempt  per  OID
196           before  marking the transfer as failed, if the object has a verifi‐
197           cation action associated with it. Must be an integer  which  is  at
198           least  one. If the value is not an integer, is less than one, or is
199           not given, a default value of three will be used instead.
200
201lfs.transfer.enablehrefrewrite
202
203           If set to true, this enables rewriting href of  LFS  objects  using
204           url.*.insteadof/pushinsteadof  config.  pushinsteadof  is used only
205           for uploading, and insteadof is used for downloading  and  for  up‐
206           loading when pushinsteadof is not set.
207
208
209
210   Push settings
211lfs.allowincompletepush
212
213           When  pushing,  allow  objects  to  be missing from the local cache
214           without halting a Git push. Default: false.
215
216
217
218   Fetch settings
219lfs.fetchinclude
220
221           When fetching, only download objects which match any entry on  this
222           comma-separated  list  of  paths/filenames. Wildcard matching is as
223           per git-ignore(1). See git-lfs-fetch(1) for examples.
224
225lfs.fetchexclude
226
227           When fetching, do not download objects which match any item on this
228           comma-separated  list  of  paths/filenames. Wildcard matching is as
229           per git-ignore(1). See git-lfs-fetch(1) for examples.
230
231lfs.fetchrecentrefsdays
232
233           If non-zero, fetches refs which have commits within N days  of  the
234           current  date.  Only local refs are included unless lfs.fetchrecen‐
235           tremoterefs is true. Also used as a basis for  pruning  old  files.
236           The default is 7 days.
237
238lfs.fetchrecentremoterefs
239
240           If  true,  fetches  remote refs (for the remote you´re fetching) as
241           well as local refs in the recent window. This is  useful  to  fetch
242           objects  for remote branches you might want to check out later. The
243           default is true; if you set  this  to  false,  fetching  for  those
244           branches will only occur when you either check them out (losing the
245           advantage of fetch --recent), or create  a  tracking  local  branch
246           separately then fetch again.
247
248lfs.fetchrecentcommitsdays
249
250           In addition to fetching at refs, also fetches previous changes made
251           within N days of the latest commit on the ref. This  is  useful  if
252           you´re  often  reviewing  recent  changes. Also used as a basis for
253           pruning old files. The default is 0 (no previous changes).
254
255lfs.fetchrecentalways
256
257           Always operate as if --recent was included in a git lfs fetch call.
258           Default false.
259
260
261
262   Prune settings
263lfs.pruneoffsetdays
264
265           The number of days added to the lfs.fetchrecent* settings to deter‐
266           mine what can be pruned. Default is  3  days,  i.e.  that  anything
267           fetched  at the very oldest edge of the ´recent window´ is eligible
268           for pruning 3 days later.
269
270lfs.pruneremotetocheck
271
272           Set the remote that LFS files must have been pushed to in order for
273           them  to  be considered eligible for local pruning. Also the remote
274           which is called if --verify-remote is enabled.
275
276lfs.pruneverifyremotealways
277
278           Always run git lfs prune as if --verify-remote was provided.
279
280
281
282   Extensions
283lfs.extension.<name>.<setting>
284
285           Git LFS extensions enable the manipulation of files streams  during
286           smudge  and clean. name groups the settings for a single extension,
287           and the settings are: * clean The command which runs when files are
288           added  to  the index * smudge The command which runs when files are
289           written to the working copy * priority The order of this  extension
290           compared to others
291
292
293
294   Other settings
295lfs.<url>.access
296
297           Note: this setting is normally set by LFS itself on receiving a 401
298           response (authentication required), you don´t normally need to  set
299           it manually.
300
301           If  set to "basic" then credentials will be requested before making
302           batch requests to this url, otherwise a public  request  will  ini‐
303           tially be attempted.
304
305lfs.<url>.locksverify
306
307           Determines  whether  locks are checked before Git pushes. This pre‐
308           vents you from pushing changes  to  files  that  other  users  have
309           locked.  The Git LFS pre-push hook varies its behavior based on the
310           value of this config key.
311
312null - In the absence of a value, Git LFS will  attempt  the  call,
313           and  warn if it returns an error. If the response is valid, Git LFS
314           will set the value to true, and will halt the push if the user  at‐
315           tempts  to  update a file locked by another user. If the server re‐
316           turns a 501 Not Implemented response, Git LFS will set the value to
317           false.
318
319true  -  Git LFS will attempt to verify locks, halting the Git push
320           if there are any server issues, or if the user attempts to update a
321           file locked by another user.
322
323false - Git LFS will completely skip the lock check in the pre-push
324           hook. You should set this if you´re not using File Locking, or your
325           Git server verifies locked files on pushes automatically.
326
327
328
329       Supports      URL      config      lookup      as     described     in:
330       https://git-scm.com/docs/git-config#git-config-httplturlgt. To set this
331       value per-host: git config --global lfs.https://github.com/.locksverify
332       [true|false].
333
334lfs.<url>.contenttype
335
336           Determines whether Git LFS should attempt to detect an  appropriate
337           HTTP  Content-Type  header  when uploading using the ´basic´ upload
338           adapter. If set to false, the default header of  Content-Type:  ap‐
339           plication/octet-stream is chosen instead. Default: ´true´.
340
341lfs.skipdownloaderrors
342
343           Causes Git LFS not to abort the smudge filter when a download error
344           is encountered, which allows actions such as checkout to work  when
345           you  are  unable to download the LFS content. LFS files which could
346           not download will contain pointer content instead.
347
348           Note that this will result in git commands which  call  the  smudge
349           filter  to  report  success  even in cases when LFS downloads fail,
350           which may affect scripts.
351
352           You can also set the environment variable GIT_LFS_SKIP_DOWNLOAD_ER‐
353           RORS=1 to get the same effect.
354
355GIT_LFS_PROGRESS
356
357           This  environment  variable causes Git LFS to emit progress updates
358           to an absolute file-path on disk when cleaning, smudging, or fetch‐
359           ing.
360
361           Progress  is  reported periodically in the form of a new line being
362           appended to the end of the file. Each new line will take  the  fol‐
363           lowing format:
364
365           <direction> <current>/<total files> <downloaded>/<total> <name>
366
367           Each field is described below: * direction: The direction of trans‐
368           fer, either "checkout", "download", or "upload". * current The  in‐
369           dex of the currently transferring file. * total files The estimated
370           count of all files to be transferred. * downloaded  The  number  of
371           bytes  already  downloaded. * total The entire size of the file, in
372           bytes. * name The name of the file.
373
374GIT_LFS_FORCE_PROGRESS lfs.forceprogress
375
376           Controls whether Git LFS will suppress  progress  status  when  the
377           standard  output  stream is not attached to a terminal. The default
378           is false which makes Git LFS detect whether stdout  is  a  terminal
379           and suppress progress when it´s not; you can disable this behaviour
380           and force progress status even when standard output stream is not a
381           terminal by setting either variable to 1, ´yes´ or ´true´.
382
383GIT_LFS_SKIP_SMUDGE
384
385           Sets  whether or not Git LFS will skip attempting to convert point‐
386           ers of files tracked into their corresponding objects when  checked
387           out  into a working copy. If ´true´, ´1´, ´on´, or similar, Git LFS
388           will skip the smudge process in both git lfs  smudge  and  git  lfs
389           filter-process.  If  unset, or set to ´false´, ´0´, ´off´, or simi‐
390           lar, Git LFS will smudge files as normal.
391
392GIT_LFS_SKIP_PUSH
393
394           Sets whether or not Git LFS will attempt to upload new Git LFS  ob‐
395           ject  in a pre-push hook. If ´true´, ´1´, ´on´, or similar, Git LFS
396           will skip the pre-push hook, so no new Git LFS objects will be  up‐
397           loaded.  If  unset,  or set to ´false´, ´0´, ´off´, or similar, Git
398           LFS will proceed as normal.
399
400GIT_LFS_SET_LOCKABLE_READONLY lfs.setlockablereadonly
401
402           These settings, the first an environment variable and the second  a
403           gitconfig  setting,  control  whether files marked as ´lockable´ in
404           git lfs track are made read-only  in  the  working  copy  when  not
405           locked  by  the  current user. The default is true; you can disable
406           this behaviour and have all files writeable by setting either vari‐
407           able to 0, ´no´ or ´false´.
408
409lfs.lockignoredfiles
410
411           This  setting  controls whether Git LFS will set ignored files that
412           match the lockable pattern read only as well as tracked files.  The
413           default is false; you can enable this behavior by setting the vari‐
414           able to 1, ´yes´, or ´true´.
415
416lfs.defaulttokenttl
417
418           This setting sets a default  token  TTL  when  git-lfs-authenticate
419           does  not  include  the TTL in the JSON response but still enforces
420           it.
421
422           Note that this is only necessary for larger repositories hosted  on
423           LFS servers that don´t include the TTL.
424
425
426

LFSCONFIG

428       The .lfsconfig file in a repository is read and interpreted in the same
429       format as the file stored in .git/config. It allows a subset of keys to
430       be used, including and limited to:
431
432       ○   lfs.allowincompletepush
433
434       ○   lfs.fetchexclude
435
436       ○   lfs.fetchinclude
437
438       ○   lfs.gitprotocol
439
440       ○   lfs.locksverify
441
442       ○   lfs.pushurl
443
444       ○   lfs.url
445
446       ○   remote.{name}.lfsurl
447
448       ○   lfs.{*}.access
449
450
451
452       The  set  of  keys allowed in this file is restricted for security rea‐
453       sons.
454

EXAMPLES

456       Configure a custom LFS endpoint for your repository:
457
458
459       git     config     -f     .lfsconfig     lfs.url      https://lfs.exam
460       ple.com/foo/bar/info/lfs
461

SEE ALSO

463       git-config(1), git-lfs-install(1), gitattributes(5)
464
465       Part of the git-lfs(1) suite.
466
467
468
469                                  March 2021                 GIT-LFS-CONFIG(5)
Impressum