1git-annex(1)                General Commands Manual               git-annex(1)
2
3
4

NAME

6       git-annex - manage files with git, without checking their contents in
7

SYNOPSIS

9       git annex command [params ...]
10

DESCRIPTION

12       git-annex  allows  managing  files  with git, without checking the file
13       contents into git. While that may seem paradoxical, it is  useful  when
14       dealing with files larger than git can currently easily handle, whether
15       due to limitations in memory, checksumming time, or disk space.
16
17       Even without file content tracking, being able  to  manage  files  with
18       git, move files around and delete files with versioned directory trees,
19       and use branches and distributed clones, are all very handy reasons  to
20       use git. And annexed files can co-exist in the same git repository with
21       regularly versioned files, which is convenient  for  maintaining  docu‐
22       ments,  Makefiles,  etc that are associated with annexed files but that
23       benefit from full revision control.
24
25       When a file is annexed, its content is moved into  a  key-value  store,
26       and  a  symlink  is made that points to the content. These symlinks are
27       checked into git and versioned like regular files. You  can  move  them
28       around,  delete them, and so on. Pushing to another git repository will
29       make git-annex there aware of the annexed file, and it can be  used  to
30       retrieve its content from the key-value store.
31

EXAMPLES

33        # git annex get video/hackity_hack_and_kaxxt.mov
34        get video/hackity_hack_and_kaxxt.mov (not available)
35          I was unable to access these remotes: server
36          Try making some of these repositories available:
37            5863d8c0-d9a9-11df-adb2-af51e6559a49  -- my home file server
38            58d84e8a-d9ae-11df-a1aa-ab9aa8c00826  -- portable USB drive
39            ca20064c-dbb5-11df-b2fe-002170d25c55  -- backup SATA drive
40        failed
41        # sudo mount /media/usb
42        # git remote add usbdrive /media/usb
43        # git annex get video/hackity_hack_and_kaxxt.mov
44        get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok
45
46        # git annex add iso
47        add iso/Debian_5.0.iso ok
48
49        # git annex drop iso/Debian_4.0.iso
50        drop iso/Debian_4.0.iso ok
51
52        # git annex move iso --to=usbdrive
53        move iso/Debian_5.0.iso (moving to usbdrive...) ok
54

COMMONLY USED COMMANDS

56       help
57
58              Display built-in help.
59
60              For help on a specific command, use git annex help command
61
62       add [path ...]
63              Adds files to the annex.
64
65              See git-annex-add(1) for details.
66
67       get [path ...]
68              Makes the content of annexed files available in this repository.
69
70              See git-annex-get(1) for details.
71
72       drop [path ...]
73              Drops the content of annexed files from this repository.
74
75              See git-annex-drop(1) for details.
76
77       move [path ...] [--from=remote|--to=remote]
78              Moves the content of files from or to another remote.
79
80              See git-annex-move(1) for details.
81
82       copy [path ...] [--from=remote|--to=remote]
83              Copies the content of files from or to another remote.
84
85              See git-annex-copy(1) for details.
86
87       status [path ...]
88              Show the working tree status. (deprecated)
89
90              See git-annex-status(1) for details.
91
92       unlock [path ...]
93              Unlock annexed files for modification.
94
95              See git-annex-unlock(1) for details.
96
97       edit [path ...]
98              This is an alias for the unlock command. May be easier to remem‐
99              ber, if you think of this as allowing you  to  edit  an  annexed
100              file.
101
102       lock [path ...]
103              Use  this  to undo an unlock command if you don't want to modify
104              the files, or have made modifications you want to discard.
105
106              See git-annex-lock(1) for details.
107
108       pull [remote ...]
109              Pull content from remotes.
110
111              See git-annex-pull(1) for details.
112
113       push [remote ...]
114              Push content to remotes.
115
116              See git-annex-push(1) for details.
117
118       sync [remote ...]
119              Synchronize local repository with remotes.
120
121              See git-annex-sync(1) for details.
122
123       assist [remote ...]
124              Add files and sync changes with remotes.
125
126              See git-annex-assist(1) for details.
127
128       mirror [path ...] [--to=remote|--from=remote]
129              Mirror content of files to/from another repository.
130
131              See git-annex-mirror(1) for details.
132
133       addurl [url ...]
134              Downloads each url to its own file, which is added to the annex.
135
136              See git-annex-addurl(1) for details.
137
138       rmurl file url
139              Record that the file is no longer available at the url.
140
141              See git-annex-rmurl(1) for details.
142
143       import --from remote branch[:subdir] | [path ...]
144              Add a tree of files to the repository.
145
146              See git-annex-import(1) for details.
147
148       importfeed [url ...]
149              Imports the contents of podcast feeds into the annex.
150
151              See git-annex-importfeed(1) for details.
152
153       export treeish --to remote
154              Export content to a remote.
155
156              See git-annex-export(1) for details.
157
158       undo [filename|directory] ...
159              Undo last change to a file or directory.
160
161              See git-annex-undo(1) for details.
162
163       multicast
164              Multicast file distribution.
165
166              See git-annex-multicast(1) for details.
167
168       watch  Daemon to watch for changes and autocommit.
169
170              See git-annex-watch(1) for details.
171
172       assistant
173              Daemon to automatically sync changes.
174
175              See git-annex-assistant(1) for details.
176
177       webapp Opens a web app, that allows easy setup of a  git-annex  reposi‐
178              tory,  and  control of the git-annex assistant. If the assistant
179              is not already running, it will be started.
180
181              See git-annex-webapp(1) for details.
182
183       remotedaemon
184              Persistant communication with remotes.
185
186              See git-annex-remotedaemon(1) for details.
187

REPOSITORY SETUP COMMANDS

189       init [description]
190
191              Until a repository (or one of its remotes) has been initialized,
192              git-annex  will  refuse  to operate on it, to avoid accidentally
193              using it in a repository that was not intended to have an annex.
194
195              See git-annex-init(1) for details.
196
197       describe repository description
198              Changes the description of a repository.
199
200              See git-annex-describe(1) for details.
201
202       initremote name type=value [param=value ...]
203              Creates a new special remote, and adds it to .git/config.
204
205              See git-annex-initremote(1) for details.
206
207       enableremote name [param=value ...]
208              Enables use of an existing special remote in the current reposi‐
209              tory.
210
211              See git-annex-enableremote(1) for details.
212
213       configremote name [param=value ...]
214              Changes configuration of an existing special remote.
215
216              See git-annex-configremote(1) for details.
217
218       renameremote
219              Renames a special remote.
220
221              See git-annex-renameremote(1) for details.
222
223       enable-tor
224              Sets up tor hidden service.
225
226              See git-annex-enable-tor(1) for details.
227
228       numcopies [N]
229              Configure desired number of copies.
230
231              See git-annex-numcopies(1) for details.
232
233       mincopies [N]
234              Configure minimum number of copies.
235
236              See git-annex-mincopies(1) for details.
237
238       trust [repository ...]
239              Records  that  a  repository is trusted to not unexpectedly lose
240              content. Use with care.
241
242              See git-annex-trust(1) for details.
243
244       untrust [repository ...]
245              Records that a repository is not trusted and could lose  content
246              at any time.
247
248              See git-annex-untrust(1) for details.
249
250       semitrust [repository ...]
251              Returns a repository to the default semi trusted state.
252
253              See git-annex-semitrust(1) for details.
254
255       group repository groupname
256              Add a repository to a group.
257
258              See git-annex-group(1) for details.
259
260       ungroup repository groupname
261              Removes a repository from a group.
262
263              See git-annex-ungroup(1) for details.
264
265       wanted repository [expression]
266              Get or set preferred content expression.
267
268              See git-annex-wanted(1) for details.
269
270       groupwanted groupname [expression]
271              Get or set groupwanted expression.
272
273              See git-annex-groupwanted(1) for details.
274
275       required repository [expression]
276              Get or set required content expression.
277
278              See git-annex-required(1) for details.
279
280       schedule repository [expression]
281              Get or set scheduled jobs.
282
283              See git-annex-schedule(1) for details.
284
285       config Get and set other configuration stored in git-annex branch.
286
287              See git-annex-config(1) for details.
288
289       vicfg  Opens EDITOR on a temp file containing most of the above config‐
290              uration settings, as well as a few others, and  when  it  exits,
291              stores any changes made back to the git-annex branch.
292
293              See git-annex-vicfg(1) for details.
294
295       adjust Switches a repository to use an adjusted branch, which can auto‐
296              matically unlock all files, etc.
297
298              See git-annex-adjust(1) for details.
299
300       direct Switches a repository to use direct mode. (deprecated)
301
302              See git-annex-direct(1) for details.
303
304       indirect
305              Switches a repository to use indirect mode. (deprecated)
306
307              See git-annex-indirect(1) for details.
308

REPOSITORY MAINTENANCE COMMANDS

310       fsck [path ...]
311
312              Checks the annex consistency, and warns about or fixes any prob‐
313              lems found.  This is a good complement to git fsck.
314
315              See git-annex-fsck(1) for details.
316
317       expire [repository:]time ...
318              Expires  repositories that have not recently performed an activ‐
319              ity (such as a fsck).
320
321              See git-annex-expire(1) for details.
322
323       unused Checks the annex for data that does not correspond to any  files
324              present  in any tag or branch, and prints a numbered list of the
325              data.
326
327              See git-annex-unused(1) for details.
328
329       dropunused [number|range ...]
330              Drops the data corresponding to the numbers, as  listed  by  the
331              last git annex unused
332
333              See git-annex-dropunused(1) for details.
334
335       addunused [number|range ...]
336              Adds  back files for the content corresponding to the numbers or
337              ranges, as listed by the last git annex unused.
338
339              See git-annex-addunused(1) for details.
340
341       fix [path ...]
342              Fixes up symlinks that have become broken to again point to  an‐
343              nexed content.
344
345              See git-annex-fix(1) for details.
346
347       merge  Automatically merge changes from remotes.
348
349              See git-annex-merge(1) for details.
350
351       upgrade
352              Upgrades the repository.
353
354              See git-annex-upgrade(1) for details.
355
356       dead [repository ...] [--key key]
357              Indicates  that a repository or a single key has been irretriev‐
358              ably lost.
359
360              See git-annex-dead(1) for details.
361
362       forget Causes the git-annex branch to be rewritten, throwing away  his‐
363              torical data about past locations of files.
364
365              See git-annex-forget(1) for details.
366
367       filter-branch
368              Produces a filtered version of the git-annex branch.
369
370              See git-annex-filter-branch(1) for details.
371
372       repair This  can repair many of the problems with git repositories that
373              git fsck detects, but does not itself  fix.  It's  useful  if  a
374              repository  has become badly damaged. One way this can happen is
375              if a repository used by git-annex is on a removable  drive  that
376              gets unplugged at the wrong time.
377
378              See git-annex-repair(1) for details.
379
380       p2p    Configure peer-2-Peer links between repositories.
381
382              See git-annex-p2p(1) for details.
383

QUERY COMMANDS

385       find [path ...]
386
387              Outputs  a  list of annexed files in the specified path. With no
388              path, finds files in the current directory and  its  subdirecto‐
389              ries.
390
391              See git-annex-find(1) for details.
392
393       whereis [path ...]
394              Displays  information  about where the contents of files are lo‐
395              cated.
396
397              See git-annex-whereis(1) for details.
398
399       list [path ...]
400              Displays a table of remotes that contain  the  contents  of  the
401              specified  files.  This is similar to whereis but a more compact
402              display.
403
404              See git-annex-list(1) for details.
405
406       whereused
407              Finds what files use or used a key.
408
409       log [path ...]
410              Displays the location log for the specified file or files, show‐
411              ing  each  repository  they were added to ("+") and removed from
412              ("-").
413
414              See git-annex-log(1) for details.
415
416       info [directory|file|remote|uuid ...]
417              Displays statistics and  other  information  for  the  specified
418              item,  which  can be a directory, or a file, or a remote, or the
419              uuid of a repository.
420
421              When no item is specified, displays statistics  and  information
422              for the repository as a whole.
423
424              See git-annex-info(1) for details.
425
426       version
427              Shows  the  version  of git-annex, as well as repository version
428              information.
429
430              See git-annex-version(1) for details.
431
432       map    Generate map of repositories.
433
434              See git-annex-map(1) for details.
435
436       inprogress
437              Access files while they're being downloaded.
438
439              See git-annex-inprogress(1) for details.
440
441       findkeys
442              Similar to git-annex find, but operating on keys.
443
444              See git-annex-findkeys(1) for details.
445

METADATA COMMANDS

447       metadata [path ...]
448
449              The content of an annexed file can have any number  of  metadata
450              fields attached to it to describe it. Each metadata field can in
451              turn have any number of values.
452
453              This command can be used to set metadata, or show the  currently
454              set metadata.
455
456              See git-annex-metadata(1) for details.
457
458       view   [tag   ...]   [field=value  ...]  [field=glob  ...]  [?tag  ...]
459       [field?=glob] [!tag ...] [field!=value ...]
460              Uses metadata to build a view branch of the files in the current
461              branch,  and  checks out the view branch. Only files in the cur‐
462              rent branch whose metadata matches all the specified field  val‐
463              ues and tags will be shown in the view.
464
465              See git-annex-view(1) for details.
466
467       vpop [N]
468              Switches  from  the  currently  active view back to the previous
469              view.  Or, from the first view back to original branch.
470
471              See git-annex-vpop(1) for details.
472
473       vfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]
474              Filters the current view to only the files that have the  speci‐
475              fied field values and tags.
476
477              See git-annex-vfilter(1) for details.
478
479       vadd [field=glob ...] [field=value ...] [tag ...]
480              Changes the current view, adding an additional level of directo‐
481              ries to categorize the files.
482
483              See git-annex-vfilter(1) for details.
484
485       vcycle When a view involves nested subdirectories, this cycles the  or‐
486              der.
487
488              See git-annex-vcycle(1) for details.
489

UTILITY COMMANDS

491       migrate [path ...]
492
493              Changes the specified annexed files to use a different key-value
494              backend.
495
496              See git-annex-migrate(1) for details.
497
498       reinject src dest
499              Moves the src file into the annex as the  content  of  the  dest
500              file.   This can be useful if you have obtained the content of a
501              file from elsewhere and want to put it in the local annex.
502
503              See git-annex-reinject(1) for details.
504
505       unannex [path ...]
506              Use this to undo an accidental git annex add  command.  It  puts
507              the file back how it was before the add.
508
509              See git-annex-unannex(1) for details.
510
511       uninit De-initialize git-annex and clean out repository.
512
513              See git-annex-uninit(1) for details.
514
515       reinit uuid|description
516              Initialize repository, reusing old UUID.
517
518              See git-annex-reinit(1) for details.
519

PLUMBING COMMANDS

521       pre-commit [path ...]
522
523              This is meant to be called from git's pre-commit hook. git annex
524              init automatically creates a pre-commit hook using this.
525
526              See git-annex-pre-commit(1) for details.
527
528       post-receive
529              This is meant to be called from git's post-receive hook. git an‐
530              nex init automatically creates a post-receive hook using this.
531
532              See git-annex-post-receive(1) for details.
533
534       lookupkey [file ...]
535              Looks up key used for file.
536
537              See git-annex-lookupkey(1) for details.
538
539       calckey [file ...]
540              Calculates the key that would be used to refer to a file.
541
542              See git-annex-calckey(1) for details.
543
544       contentlocation [key ..]
545              Looks up location of annexed content for a key.
546
547              See git-annex-contentlocation(1) for details.
548
549       examinekey [key ...]
550              Print  information  that  can be determined purely by looking at
551              the key.
552
553              See git-annex-examinekey(1) for details.
554
555       matchexpression
556              Checks if a preferred content expression matches provided data.
557
558              See git-annex-matchexpression(1) for details.
559
560       fromkey [key file]
561              Manually set up a file in the git repository to link to a speci‐
562              fied key.
563
564              See git-annex-fromkey(1) for details.
565
566       registerurl [key url]
567              Registers an url for a key.
568
569              See git-annex-registerurl(1) for details.
570
571       unregisterurl [key url]
572              Unregisters an url for a key.
573
574              See git-annex-unregisterurl(1) for details.
575
576       setkey key file
577              Moves a file into the annex as the content of a key.
578
579              See git-annex-setkey(1) for details.
580
581       dropkey [key ...]
582              Drops annexed content for specified keys.
583
584              See git-annex-dropkey(1) for details.
585
586       transferkey key [--from=remote|--to=remote]
587              Transfers a key from or to a remote.
588
589              See git-annex-transferkey(1) for details.
590
591       transferrer
592              Used internally by git-annex to transfer content.
593
594              See git-annex-transferrer(1) for details.
595
596       transferkeys
597              Used internally by old versions of the assistant.
598
599              See git-annex-transferkey(1) for details.
600
601       setpresentkey key uuid [1|0]
602              This  plumbing-level  command  changes git-annex's records about
603              whether the specified key's content is present in a remote  with
604              the specified uuid.
605
606              See git-annex-setpresentkey(1) for details.
607
608       readpresentkey key uuid
609              Read records of where key is present.
610
611              See git-annex-readpresentkey(1) for details.
612
613       checkpresentkey key remote
614              Check if key is present in remote.
615
616              See git-annex-checkpresentkey(1) for details.
617
618       rekey [file key ...]
619              Change keys used for files.
620
621              See git-annex-rekey(1) for details.
622
623       resolvemerge
624              Resolves a conflicted merge, by adding both conflicting versions
625              of the file to the tree, using variants of their filename.  This
626              is  done  automatically  when  using git annex sync or git-annex
627              pull or git annex merge.
628
629              See git-annex-resolvemerge(1) for details.
630
631       diffdriver
632              This can be used to make git diff use an  external  diff  driver
633              with annexed files.
634
635              See git-annex-diffdriver(1) for details.
636
637       smudge This  command lets git-annex be used as a git filter driver, al‐
638              lowing annexed files in the git repository to be unlocked  regu‐
639              lar files instead of symlinks.
640
641              See git-annex-smudge(1) for details.
642
643       filter-process
644              An  alternative  implementation  of a git filter driver, that is
645              faster in some situations and slower in  others  than  git-annex
646              smudge.
647
648              See git-annex-filter-process(1) for details.
649
650       restage
651              Restages unlocked files in the git index.
652
653              See git-annex-restage(1) for details.
654
655       findref [ref]
656              Lists files in a git ref. (deprecated)
657
658              See git-annex-findref(1) for details.
659
660       proxy -- git cmd [options]
661              Bypass direct mode guard. (deprecated)
662
663              See git-annex-proxy(1) for details.
664

TESTING COMMANDS

666       test
667
668              This runs git-annex's built-in test suite.
669
670              See git-annex-test(1) for details.
671
672       testremote remote
673              This  tests a remote by generating some random objects and send‐
674              ing them to the remote, then redownloading them,  removing  them
675              from the remote, etc.
676
677              It's  safe to run in an existing repository (the repository con‐
678              tents are not altered), although it may perform  expensive  data
679              transfers.
680
681              See git-annex-testremote(1) for details.
682
683       fuzztest
684              Generates random changes to files in the current repository, for
685              use in testing the assistant.
686
687              See git-annex-fuzztest(1) for details.
688
689       benchmark
690              This runs git-annex's built-in benchmarks, if it was built  with
691              benchmarking support.
692
693              See git-annex-benchmark(1) for details.
694

ADDON COMMANDS

696       In  addition  to  all  the  commands listed above, more commands can be
697       added to git-annex by dropping commands named like "git-annex-foo" into
698       a directory in the PATH.
699

CONFIGURATION

701       Like  other  git  commands,  git-annex  is  configured via .git/config.
702       These settings, as well as relevant git config settings, are  the  ones
703       git-annex uses.
704
705       (Some  of  these  settings  can  also  be set, across all clones of the
706       repository, using git-annex-config. See its man page for a list.)
707
708       annex.uuid
709              A unique UUID for this repository (automatically set).
710
711       annex.backend
712              Name of the default key-value backend to  use  when  adding  new
713              files  to the repository. See git-annex-backends(1) for informa‐
714              tion about available backends.
715
716              This is overridden by annex annex.backend configuration  in  the
717              .gitattributes files, and by the --backend option.
718
719              (This  used  to  be named annex.backends, and that will still be
720              used if set.)
721
722       annex.securehashesonly
723              Set to true to indicate that  the  repository  should  only  use
724              cryptographically  secure  hashes  (SHA2, SHA3) and not insecure
725              hashes (MD5, SHA1) for content.
726
727              When this is set, the contents of files using  cryptographically
728              insecure  hashes  will not be allowed to be added to the reposi‐
729              tory.
730
731              Also, git-annex fsck will complain about any  files  present  in
732              the  repository  that use insecure hashes. And, git-annex import
733              --no-content will refuse to import files  from  special  remotes
734              using insecure hashes.
735
736              To  configure the behavior in new clones of the repository, this
737              can be set using git-annex-config.
738
739       annex.maxextensionlength
740              Maximum length, in bytes, of what is considered a  filename  ex‐
741              tension.  This is used when adding a file to a backend that pre‐
742              serves filename extensions, and  also  when  generating  a  view
743              branch.
744
745              The  default  length  is 4, which allows extensions like "jpeg".
746              The dot before the extension is not counted part of its  length.
747              At  most  two  extensions  at the end of a filename will be pre‐
748              served, e.g. .gz or .tar.gz .
749
750       annex.diskreserve
751              Amount of disk space to reserve.  Disk  space  is  checked  when
752              transferring  annexed  content  to  avoid running out, and addi‐
753              tional free space can be reserved via this option, to make space
754              for  other data (such as git commit logs). Can be specified with
755              any commonly used units, for example, "0.5 gb", "500M", or  "100
756              KiloBytes"
757
758              The default reserve is 100 megabytes.
759
760       annex.skipunknown
761              Set  to true to make commands like "git-annex get" silently skip
762              over items that are listed in the  command  line,  but  are  not
763              checked into git.
764
765              Set  to  false  to make it an error for commands like "git-annex
766              get" to be asked to operate on files that are not  checked  into
767              git.  (This is the default in recent versions of git-annex.)
768
769              Note that, when annex.skipunknown is false, a command like "git-
770              annex get ."  will fail if no files in the current directory are
771              checked  into  git,  but a command like "git-annex get" will not
772              fail, because the current directory is not listed,  but  is  im‐
773              plicit. Commands like "git-annex get foo/" will fail if no files
774              in the directory are checked into git, but if at least one  file
775              is,  it  will  ignore  other files that are not. This is all the
776              same as the behavior of "git-ls files --error-unmatch".
777
778              Also note that git-annex skips files that are checked into  git,
779              but are not annexed files, this setting does not affect that.
780
781       annex.largefiles
782              Used  to  configure  which files are large enough to be added to
783              the annex.  It is an expression that matches the large files, eg
784              "include=*.mp3  or  largerthan=500kb" See git-annex-matching-ex‐
785              pression(1) for details on the syntax.
786
787              Overrides  any  annex.largefiles  attributes  in  .gitattributes
788              files.
789
790              To  configure  a  default annex.largefiles for all clones of the
791              repository, this can be set in git-annex-config(1).
792
793              This configures the behavior of  both  git-annex  and  git  when
794              adding  files  to the repository. By default, git-annex add adds
795              all files to the annex (except dotfiles), and git add adds files
796              to  git  (unless they were added to the annex previously).  When
797              annex.largefiles is configured, both git annex add and  git  add
798              will  add matching large files to the annex, and the other files
799              to git.
800
801              Other git-annex commands also honor annex.largefiles,  including
802              git  annex  import, git annex addurl, git annex importfeed, git-
803              annex assist, and the git-annex assistant.
804
805       annex.dotfiles
806              Normally, dotfiles are assumed  to  be  files  like  .gitignore,
807              whose  content  should  always be part of the git repository, so
808              they will not be added to the annex. Setting  annex.dotfiles  to
809              true  makes dotfiles be added to the annex the same as any other
810              file.
811
812              To annex only some dotfiles, set this and configure annex.large‐
813              files  to  match  the  ones you want. For example, to match only
814              dotfiles ending in ".big"
815
816               git   config   annex.largefiles   "(include=.*.big    or    in‐
817              clude=*/.*.big) or (exclude=.* and exclude=*/.*)"
818               git config annex.dotfiles true
819
820              To  configure  a  default  annex.dotfiles  for all clones of the
821              repository, this can be set in git-annex-config(1).
822
823       annex.gitaddtoannex
824              Setting this to false will prevent git add from adding files  to
825              the annex, despite the annex.largefiles configuration.
826
827       annex.addsmallfiles
828              Controls  whether  small  files  (not matching annex.largefiles)
829              should be checked into git by git annex add. Defaults  to  true;
830              set to false to instead make small files be skipped.
831
832       annex.addunlocked
833              Commands  like  git-annex  add  default  to  adding files to the
834              repository in locked form. This can make them add the  files  in
835              unlocked  form,  the  same as if git-annex-unlock(1) were run on
836              the files.
837
838              This can be set to "true" to add everything unlocked, or it  can
839              be  a  more  complicated  expression that matches files by name,
840              size, or content. See git-annex-matching-expression(1)  for  de‐
841              tails.
842
843              To  configure  a default annex.addunlocked for all clones of the
844              repository, this can be set in git-annex-config(1).
845
846              (Using git add always adds files in unlocked form and it is  not
847              affected by this setting.)
848
849              When  a repository has core.symlinks set to false, or has an ad‐
850              justed unlocked branch checked out, this setting is ignored, and
851              files are always added to the repository in unlocked form.
852
853       annex.numcopies
854              This is a deprecated setting. You should instead use the git an‐
855              nex numcopies command to configure how many copies of files  are
856              kept  across  all  repositories,  or the annex.numcopies .gitat‐
857              tributes setting.
858
859              This config setting is only looked at when git  annex  numcopies
860              has  never  been configured, and when there's no annex.numcopies
861              setting in the .gitattributes file.
862
863       annex.genmetadata
864              Set this to true to make git-annex automatically  generate  some
865              metadata when adding files to the repository.
866
867              In particular, it stores year, month, and day metadata, from the
868              file's modification date.
869
870              When importfeed is used, it stores additional metadata from  the
871              feed, such as the author, title, etc.
872
873       annex.used-refspec
874              This  controls which refs git-annex unused considers to be used.
875              See REFSPEC FORMAT in git-annex-unused(1) for details.
876
877       annex.jobs
878              Configure the number of concurrent jobs to run. Default is 1.
879
880              Only git-annex commands that support the --jobs option will  use
881              this.
882
883              Setting this to "cpus" will run one job per CPU core.
884
885              When the --batch option is used, this configuration is ignored.
886
887       annex.adjustedbranchrefresh
888              When  git-annex-adjust(1)  is  used to set up an adjusted branch
889              that needs to be refreshed after getting or dropping files, this
890              config controls how frequently the branch is refreshed.
891
892              Refreshing  the  branch takes some time, so doing it after every
893              file can be too slow. (It also can generate a  lot  of  dangling
894              git objects.)  The default value is 0 (or false), which does not
895              refresh the branch. Setting 1 (or true) will refresh only  once,
896              after  git-annex has made other changes. Setting 2 refreshes af‐
897              ter every file, 3 after every other file, and so on; setting 100
898              refreshes after every 99 files.
899
900              (If  git-annex gets faster in the future, refresh rates will in‐
901              crease proportional to the speed improvements.)
902
903       annex.queuesize
904              git-annex builds a queue of git commands, in  order  to  combine
905              similar  commands for speed. By default the size of the queue is
906              limited to 10240 commands; this can be used to change the  size.
907              If  you  have  plenty  of memory and are working with very large
908              numbers of files, increasing the queue size can speed it up.
909
910       annex.bloomcapacity
911              The git annex unused and git annex sync --content commands use a
912              bloom filter to determine what files are present in eg, the work
913              tree.  The default bloom filter is sized to handle up to  500000
914              files.  If  your  repository is larger than that, you should in‐
915              crease this value. Larger values will make git-annex unused  and
916              git annex sync --content consume more memory; run git annex info
917              for memory usage numbers.
918
919       annex.bloomaccuracy
920              Adjusts the accuracy of the bloom filter used by git  annex  un‐
921              used  and  git  annex  sync  --content.  The default accuracy is
922              10000000 -- 1 unused file out of 10000000 will be missed by  git
923              annex unused. Increasing the accuracy will make git annex unused
924              consume more memory; run git annex info for  memory  usage  num‐
925              bers.
926
927       annex.sshcaching
928              By  default,  git-annex  caches ssh connections using ssh's Con‐
929              trolMaster and ControlPersist settings (if  built  using  a  new
930              enough ssh). To disable this, set to false.
931
932       annex.adviceNoSshCaching
933              When  git-annex  is unable to use ssh connection caching, or has
934              been configured not to, and concurrency is enabled, it will warn
935              that  this  might result in multiple ssh processes prompting for
936              passwords at the same time. To disable that warning, eg  if  you
937              have  configured  ssh  connection  caching yourself, or have ssh
938              agent caching passwords, set this to false.
939
940       annex.alwayscommit
941              By default, git-annex automatically commits data to the  git-an‐
942              nex  branch  after  each command is run. If you have a series of
943              commands that you want to make a single commit, you can run  the
944              commands  with -c annex.alwayscommit=false. You can later commit
945              the data by running git annex merge (or by automatic merges)  or
946              git annex sync.
947
948       annex.commitmessage
949              When git-annex updates the git-annex branch, it usually makes up
950              its own commit message (eg "update"), since users rarely look at
951              or  care  about  changes to that branch. If you do care, you can
952              specify this setting by  running  commands  with  -c  annex.com‐
953              mitmessage=whatever
954
955              This works well in combination with annex.alwayscommit=false, to
956              gather up a set of changes and commit them with  a  message  you
957              specify.
958
959       annex.alwayscompact
960              By  default, git-annex compacts data it records in the git-annex
961              branch.  Setting this to false avoids doing that  compaction  in
962              some cases, which can speed up operations that populate the git-
963              annex branch with a lot of data. However, when used with  opera‐
964              tions  that  overwrite  old values in the git-annex branch, that
965              may cause the git-annex branch to use more disk  space,  and  so
966              slow down reading data from it.
967
968              An  example  of  a  command  that can be sped up by using -c an‐
969              nex.alwayscompact=false is git-annex registerurl  --batch,  when
970              adding a large number of urls to the same key.
971
972              This   option   was   first   supported   by  git-annex  version
973              10.20220724.  It is not entirely safe to set this  option  in  a
974              repository  that may also be used by an older version of git-an‐
975              nex at the same time as a version that supports this option.
976
977       annex.allowsign
978              By default git-annex avoids gpg signing commits  that  it  makes
979              when  they're  not the purpose of a command, but only a side ef‐
980              fect.  That default avoids lots of  gpg  password  prompts  when
981              commit.gpgSign  is set. A command like git annex sync or git an‐
982              nex merge will gpg sign its commit, but a command like git annex
983              get,  that updates the git-annex branch, will not. The assistant
984              also avoids signing commits.
985
986              Setting annex.allowsign to true lets all commits be  signed,  as
987              controlled by commit.gpgSign and other git configuration.
988
989       annex.merge-annex-branches
990              By  default,  git-annex  branches that have been pulled from re‐
991              motes are automatically merged into the local git-annex  branch,
992              so that git-annex has the most up-to-date possible knowledge.
993
994              To avoid that merging, set this to "false".
995
996              This  can  be useful particularly when you don't have write per‐
997              mission to the repository. While git-annex  is  mostly  able  to
998              work in a read-only repository with unmerged git-annex branches,
999              some things do not work, and when it does work it will be slower
1000              due to needing to look at each of the unmerged branches.
1001
1002       annex.private
1003              When  this  is  set to true, no information about the repository
1004              will be recorded in the git-annex branch.
1005
1006              For example, to make a repository without any mention of it ever
1007              appearing in the git-annex branch:
1008
1009               git init myprivate
1010               cd myprivaterepo
1011               git config annex.private true
1012               git annex init
1013
1014       annex.hardlink
1015              Set  this  to  true to make file contents be hard linked between
1016              the repository and its remotes when possible, instead of a  more
1017              expensive copy.
1018
1019              Use  with  caution  --  This  can invalidate numcopies counting,
1020              since with hard links, fewer copies of a file can exist. So,  it
1021              is  a  good  idea to mark a repository using this setting as un‐
1022              trusted.
1023
1024              When a repository is set up using git clone --shared,  git-annex
1025              init  will automatically set annex.hardlink and mark the reposi‐
1026              tory as untrusted.
1027
1028              When annex.thin is also set, setting annex.hardlink has  no  ef‐
1029              fect.
1030
1031       annex.thin
1032              Set  this to true to make unlocked files be a hard link to their
1033              content in the annex, rather than a second copy. This  can  save
1034              considerable  disk  space,  but when a modification is made to a
1035              file, you will lose the local (and possibly only)  copy  of  the
1036              old  version.  Any  other,  locked  files in the repository that
1037              pointed to that content will get broken as well (git-annex  fsck
1038              will  detect  and  clean  up  after that).  So, enable this with
1039              care.
1040
1041              After setting (or unsetting) this, you should run git annex  fix
1042              to  fix  up  the annexed files in the work tree to be hard links
1043              (or copies).
1044
1045              Note that this has no effect when the filesystem does  not  sup‐
1046              port  hard links.  And when multiple files in the work tree have
1047              the same content, only one of them gets hard linked to  the  an‐
1048              nex.
1049
1050       annex.supportunlocked
1051              By  default  git-annex supports unlocked files as well as locked
1052              files, so this defaults to true. If set to false, git-annex will
1053              only support locked files. That will avoid doing the work needed
1054              to support unlocked files.
1055
1056              Note that setting this to false does not  prevent  a  repository
1057              from  having  unlocked  files  added to it, and in that case the
1058              content of the files will  not  be  accessible  until  they  are
1059              locked.
1060
1061              After  changing  this  config, you need to re-run git-annex init
1062              for it to take effect.
1063
1064       annex.resolvemerge
1065              Set to false to prevent  merge  conflicts  in  the  checked  out
1066              branch  being  automatically resolved by the git-annex assitant,
1067              git-annex assist,  git-annex  sync,  git-annex  pull,  git-annex
1068              merge, and the git-annex post-receive hook.
1069
1070              To  configure the behavior in all clones of the repository, this
1071              can be set in git-annex-config(1).
1072
1073       annex.synccontent
1074              Set to true to make git-annex sync default to  transferring  an‐
1075              nexed content.
1076
1077              Set  to  false  to  prevent git-annex assist, git-annex pull and
1078              git-annex push from transferring annexed content.
1079
1080              To configure the behavior in all clones of the repository,  this
1081              can be set in git-annex-config(1).
1082
1083       annex.synconlyannex
1084              Set  to true to make git-annex assist, git-annex sync, git-annex
1085              pull, and git-annex push default to only operating on  the  git-
1086              annex branch and annexed content.
1087
1088              To  configure the behavior in all clones of the repository, this
1089              can be set in git-annex-config(1).
1090
1091       annex.viewunsetdirectory
1092              This configures the name of a directory that is used in  a  view
1093              to contain files that do not have metadata set. The default name
1094              for the directory is "_". See git-annex-view(1) for details.
1095
1096       annex.debug
1097              Set to true to enable debug logging by default.
1098
1099       annex.debugfilter
1100              Set to configure which debug messages  to  display  (when  debug
1101              message display has been enabled by annex.debug or --debug). The
1102              value is one or more module names, separated by commas.
1103
1104       annex.version
1105              The current version of the git-annex repository. This  is  main‐
1106              tained by git-annex and should never be manually changed.
1107
1108       annex.autoupgraderepository
1109              When an old git-annex repository version is no longer supported,
1110              git-annex will normally automatically upgrade the repository  to
1111              the  new  version.  It  may  also  sometimes upgrade from an old
1112              repository version that is still supported but that  is  not  as
1113              good as a later version.
1114
1115              If  this  is set to false, git-annex won't automatically upgrade
1116              the repository. If the repository version is not supported, git-
1117              annex  will  instead  exit with an error message. If it is still
1118              supported, git-annex will continue to work.
1119
1120              You can run git annex upgrade yourself when you are ready to up‐
1121              grade the repository.
1122
1123       annex.crippledfilesystem
1124              Set  to true if the repository is on a crippled filesystem, such
1125              as FAT, which does not support symbolic links, or hard links, or
1126              unix  permissions.   This  is automatically probed by "git annex
1127              init".
1128
1129       annex.pidlock
1130              Normally, git-annex uses fine-grained lock files to allow multi‐
1131              ple  processes  to run concurrently without getting in each oth‐
1132              ers' way.  That works great, unless you are using git-annex on a
1133              filesystem  that  does  not  support  POSIX fcntl locks. This is
1134              sometimes the case when using NFS or Lustre filesystems.
1135
1136              To support such situations, you can set annex.pidlock  to  true,
1137              and it will fall back to a single top-level pid file lock.
1138
1139              Although,  often,  you'd  really  be better off fixing your net‐
1140              worked filesystem configuration to support  POSIX  locks..  And,
1141              some  networked  filesystems  are  so inconsistent that one node
1142              can't reliably tell when the other node is holding a  pid  lock.
1143              Caveat emptor.
1144
1145       annex.pidlocktimeout
1146              git-annex  will  wait  up  to this many seconds for the pid lock
1147              file to go away, and will then abort if it cannot continue.  De‐
1148              fault: 300
1149
1150              When  using  pid lock files, it's possible for a stale lock file
1151              to get left behind by previous run of git-annex that crashed  or
1152              was  interrupted.   This  is mostly avoided, but can occur espe‐
1153              cially when using a network file system. This  timeout  prevents
1154              git-annex waiting forever in such a situation.
1155
1156       annex.dbdir
1157              The directory where git-annex should store its sqlite databases.
1158              The default location is inside .git/annex/.
1159
1160              Certian filesystems, such as cifs, may not support locking oper‐
1161              ations that sqlite needs, and setting this to a directory on an‐
1162              other filesystem can work around such a problem.
1163
1164              This can safely be set to the same directory in  the  configura‐
1165              tion of multiple repositories; each repository will use a subdi‐
1166              rectory for its sqlite database.
1167
1168       annex.cachecreds
1169              When "true" (the default), git-annex will cache credentials used
1170              to  access  special  remotes  in files in .git/annex/creds/ that
1171              only you can read. To disable that caching, set to "false",  and
1172              credentials  will  only be read from the environment, or if they
1173              have been embedded in encrypted form in the git repository, will
1174              be  extracted  and decrypted each time git-annex needs to access
1175              the remote.
1176
1177       annex.secure-erase-command
1178              This can be set to a command that should be run whenever git-an‐
1179              nex removes the content of a file from the repository.
1180
1181              In the command line, %file is replaced with the file that should
1182              be erased.
1183
1184              For example, to use the wipe command, set it to wipe -f %file.
1185
1186       annex.freezecontent-command, annex.thawcontent-command
1187              Usually the write permission bits are unset to  protect  annexed
1188              objects  from  being modified or deleted. The freezecontent-com‐
1189              mand is run after git-annex has removed (or attempted to remove)
1190              the  write bit, and can be used to prevent writing in some other
1191              way.  The thawcontent-command should undo its effect, and is run
1192              before git-annex restores the write bit.
1193
1194              In  the  command line, %path is replaced with the file or direc‐
1195              tory to operate on.
1196
1197              (When annex.crippledfilesystem is set, git-annex will not try to
1198              remove/restore  the  write  bit,  but  it  will  still run these
1199              hooks.)
1200
1201       annex.tune.objecthash1, annex.tune.objecthashlower,  annex.tune.branch‐
1202       hash1
1203              These  can  be  passed to git annex init to tune the repository.
1204              They cannot be safely changed in a running repository and should
1205              never  be  set  in  global  git configuration.  For details, see
1206              <https://git-annex.branchable.com/tuning/>.
1207

CONFIGURATION OF REMOTES

1209       Remotes are configured using these settings in .git/config.
1210
1211       remote.<name>.annex-cost
1212              When determining which repository to transfer annexed files from
1213              or to, ones with lower costs are preferred.  The default cost is
1214              100 for local repositories, and 200 for remote repositories.
1215
1216       remote.<name>.annex-cost-command
1217              If set, the command is run, and the number it outputs is used as
1218              the  cost.  This allows varying the cost based on e.g., the cur‐
1219              rent network.
1220
1221       remote.<name>.annex-start-command
1222              A command to run when git-annex begins to use the  remote.  This
1223              can  be used to, for example, mount the directory containing the
1224              remote.
1225
1226              The command may be run repeatedly when multiple  git-annex  pro‐
1227              cesses are running concurrently.
1228
1229       remote.<name>.annex-stop-command
1230              A command to run when git-annex is done using the remote.
1231
1232              The  command  will only be run once *all* running git-annex pro‐
1233              cesses are finished using the remote.
1234
1235       remote.<name>.annex-shell
1236              Specify an alternative git-annex-shell executable on the  remote
1237              instead of looking for "git-annex-shell" on the PATH.
1238
1239              This  is  useful  if  the git-annex-shell program is outside the
1240              PATH or has a non-standard name.
1241
1242       remote.<name>.annex-ignore
1243              If set to true, prevents git-annex  from  storing  annexed  file
1244              contents  on  this remote by default.  (You can still request it
1245              be used by the --from and --to options.)
1246
1247              This is, for example, useful if the remote is located  somewhere
1248              without  git-annex-shell. (For example, if it's on GitHub).  Or,
1249              it could be used if the network connection between two reposito‐
1250              ries is too slow to be used normally.
1251
1252              This  does not prevent git-annex sync, git-annex pull, git-annex
1253              push, git-annex assist or the git-annex assistant from operating
1254              on the git repository.
1255
1256       remote.<name>.annex-ignore-command
1257              If  set, the command is run, and if it exits nonzero, that's the
1258              same as setting annex-ignore to true.  This  allows  controlling
1259              behavior based on e.g., the current network.
1260
1261       remote.<name>.annex-sync
1262              If  set  to  false, prevents git-annex sync (and git-annex pull,
1263              git-annex push, git-annex assist, and the  git-annex  assistant)
1264              from operating on this remote by default.
1265
1266       remote.<name>.annex-sync-command
1267              If  set, the command is run, and if it exits nonzero, that's the
1268              same as setting annex-sync to false. This allows controlling be‐
1269              havior based on e.g., the current network.
1270
1271       remote.<name>.annex-pull
1272              If  set  to false, prevents git-annex pull, git-annex sync, git-
1273              annex assist and the git-annex assistant from ever  pulling  (or
1274              fetching) from the remote.
1275
1276       remote.<name>.annex-push
1277              If  set  to false, prevents git-annex push, git-annex sync, git-
1278              annex assist and the git-annex assistant from  ever  pushing  to
1279              the remote.
1280
1281       remote.<name>.annex-readonly
1282              If  set to true, prevents git-annex from making changes to a re‐
1283              mote.  This prevents git-annex sync and  git-annex  assist  from
1284              pushing  changes to a git repository. And it prevents storing or
1285              removing files from read-only remote.
1286
1287       remote.<name>.annex-verify, annex.verify
1288              By default, git-annex will verify the checksums of objects down‐
1289              loaded  from  remotes.  If you trust a remote and don't want the
1290              overhead of these checksums, you can set this to false.
1291
1292              Note that even when this is set to false, git-annex does verifi‐
1293              cation  in  some  edge cases, where it's likely the case than an
1294              object was downloaded incorrectly, or when needed for security.
1295
1296       remote.<name>.annex-tracking-branch
1297              This is for use with special remotes that  support  exports  and
1298              imports.
1299
1300              When set to eg, "master", this tells git-annex that you want the
1301              special remote to track that branch.
1302
1303              When set to eg, "master:subdir", the special remote tracks  only
1304              the subdirectory of that branch.
1305
1306              Setting  this enables some other command to work with these spe‐
1307              cial remotes: git-annex pull will import changes from the remote
1308              and  merge  them  into  the annex-tracking-branch. And git-annex
1309              push will export changes to the  remote.  Higher-level  commands
1310              git-annex  sync  --content  and git-annex assist both import and
1311              export.
1312
1313       remote.<name>.annex-export-tracking
1314              Deprecated name  for  remote.<name>.annex-tracking-branch.  Will
1315              still  be used if it's configured and remote.<name>.annex-track‐
1316              ing-branch is not.
1317
1318       remote.<name>.annexUrl
1319              Can be used to specify a different  url  than  the  regular  re‐
1320              mote.<name>.url  for  git-annex to use when talking with the re‐
1321              mote. Similar to the pushUrl used by git-push.
1322
1323       remote.<name>.annex-uuid
1324              git-annex caches UUIDs of remote repositories here.
1325
1326       remote.<name>.annex-config-uuid
1327              Used for some special remotes, points to a different special re‐
1328              mote configuration to use.
1329
1330       remote.<name>.annex-retry, annex.retry
1331              Number  of  times a transfer that fails can be retried. (default
1332              0)
1333
1334       remote.<name>.annex-forward-retry, annex.forward-retry
1335              If a transfer made some forward progress  before  failing,  this
1336              allows  it  to  be  retried even when annex.retry does not.  The
1337              value is the maximum number of times to do that. (default 5)
1338
1339              When both annex.retry and this are set, the  maximum  number  of
1340              retries is the larger of the two.
1341
1342       remote.<name>.annex-retry-delay, annex.retry-delay
1343              Number of seconds to delay before the first retry of a transfer.
1344              When making multiple retries of the  same  transfer,  the  delay
1345              doubles after each retry. (default 1)
1346
1347       remote.<name>.annex-bwlimit, annex.bwlimit
1348              This  can  be  used  to  limit  how much bandwidth is used for a
1349              transfer from or to a remote.
1350
1351              For example, to limit transfers to 1 mebibyte  per  second:  git
1352              config annex.bwlimit "1MiB"
1353
1354              This will work with many remotes, including git remotes, but not
1355              for remotes where the transfer is run by a separate program than
1356              git-annex.
1357
1358       remote.<name>.annex-stalldetecton, annex.stalldetection
1359              Configuring this lets stalled or too-slow transfers be detected,
1360              and dealt with, so rather than  getting  stuck,  git-annex  will
1361              cancel the stalled operation. The transfer will be considered to
1362              have failed, so settings like annex.retry will control  what  it
1363              does next.
1364
1365              By  default,  git-annex  detects  transfers  that  have probably
1366              stalled, and suggests configuring this. If it is incorrectly de‐
1367              tecting stalls, setting this to "false" will avoid that.
1368
1369              Set  to  "true" to enable automatic stall detection. If a remote
1370              does not update its progress consistently,  no  automatic  stall
1371              detection will be done. And it may take a while for git-annex to
1372              decide a remote is really stalled when using automatic stall de‐
1373              tection, since it needs to be conservative about what looks like
1374              a stall.
1375
1376              For more fine control over what constitutes a stall,  set  to  a
1377              value in the form "$amount/$timeperiod" to specify how much data
1378              git-annex should expect to see flowing, minimum,  over  a  given
1379              period of time.
1380
1381              For  example,  to  detect outright stalls where no data has been
1382              transferred after 30 seconds:  git  config  annex.stalldetection
1383              "1KB/30s"
1384
1385              Or, if you have a remote on a USB drive that is normally capable
1386              of several megabytes per second, but has bad  sectors  where  it
1387              gets stuck for a long time, you could use: git config remote.us‐
1388              bdrive.annex-stalldetection "1MB/1m"
1389
1390              This is not enabled by default, because it  can  make  git-annex
1391              use  more  resources. To be able to cancel stalls, git-annex has
1392              to run transfers in separate processes (one per concurrent job).
1393              So  it may need to open more connections to a remote than usual,
1394              or the communication with those processes  may  make  it  a  bit
1395              slower.
1396
1397       remote.<name>.annex-checkuuid
1398              This  only affects remotes that have their url pointing to a di‐
1399              rectory on the same system. git-annex normally checks  the  uuid
1400              of  such remotes each time it's run, which lets it transparently
1401              deal with different drives being mounted to the location at dif‐
1402              ferent times.
1403
1404              Setting  annex-checkuuid  to false will prevent it from checking
1405              the uuid at startup (although the uuid is still verified  before
1406              making any changes to the remote repository). This may be useful
1407              to set to prevent  unnecessary  spin-up  or  automounting  of  a
1408              drive.
1409
1410       remote.<name>.annex-trustlevel
1411              Configures  a  local  trust level for the remote. This overrides
1412              the value configured by the  trust  and  untrust  commands.  The
1413              value can be any of "trusted", "semitrusted" or "untrusted".
1414
1415       remote.<name>.annex-availability
1416              Can  be used to tell git-annex whether a remote is LocallyAvail‐
1417              able or GloballyAvailable. Normally, git-annex  determines  this
1418              automatically.
1419
1420       remote.<name>.annex-speculate-present
1421              Set  to  "true" to make git-annex speculate that this remote may
1422              contain the content of any file, even though its normal location
1423              tracking does not indicate that it does. This will cause git-an‐
1424              nex to try to get all file contents from the remote. Can be use‐
1425              ful in setting up a caching remote.
1426
1427       remote.<name>.annex-private
1428              When  this  is set to true, no information about the remote will
1429              be recorded in the git-annex branch. This is mostly  useful  for
1430              special  remotes,  and is set when using git-annex-initremote(1)
1431              with the --private option.
1432
1433       remote.<name>.annex-bare
1434              Can be used to tell git-annex if a remote is a  bare  repository
1435              or not. Normally, git-annex determines this automatically.
1436
1437       remote.<name>.annex-ssh-options
1438              Options to use when using ssh to talk to this remote.
1439
1440       remote.<name>.annex-rsync-options
1441              Options  to use when using rsync to or from this remote. For ex‐
1442              ample, to force IPv6, and limit the bandwidth to 100Kbyte/s, set
1443              it to -6 --bwlimit 100
1444
1445              Note  that  git-annex-shell has a whitelist of allowed rsync op‐
1446              tions, and others will not be be passed to the remote rsync.  So
1447              using some options may break the communication between the local
1448              and remote rsyncs.
1449
1450       remote.<name>.annex-rsync-upload-options
1451              Options to use when using rsync to upload a file to a remote.
1452
1453              These options are passed after other applicable  rsync  options,
1454              so  can  be  used to override them. For example, to limit upload
1455              bandwidth to 10Kbyte/s, set --bwlimit 10.
1456
1457       remote.<name>.annex-rsync-download-options
1458              Options to use when using rsync to download a file  from  a  re‐
1459              mote.
1460
1461              These  options  are passed after other applicable rsync options,
1462              so can be used to override them.
1463
1464       remote.<name>.annex-rsync-transport
1465              The remote shell to use to connect to the rsync remote. Possible
1466              values  are ssh (the default) and rsh, together with their argu‐
1467              ments, for instance ssh -p 2222 -c blowfish; Note that  the  re‐
1468              mote hostname should not appear there, see rsync(1) for details.
1469              When the transport used is ssh,  connections  are  automatically
1470              cached unless annex.sshcaching is unset.
1471
1472       remote.<name>.annex-bup-split-options
1473              Options  to  pass  to bup split when storing content in this re‐
1474              mote.  For example, to limit the bandwidth to 100Kbyte/s, set it
1475              to  --bwlimit  100k  (There  is  no corresponding option for bup
1476              join.)
1477
1478       remote.<name>.annex-gnupg-options
1479              Options to pass to GnuPG when  it's  encrypting  data.  For  in‐
1480              stance,  to  use  the AES cipher with a 256 bits key and disable
1481              compression, set  it  to  --cipher-algo  AES256  --compress-algo
1482              none. (These options take precedence over the default GnuPG con‐
1483              figuration, which is otherwise used.)
1484
1485       remote.<name>.annex-gnupg-decrypt-options
1486              Options to pass to GnuPG when it's decrypting data.  (These  op‐
1487              tions  take  precedence  over  the  default GnuPG configuration,
1488              which is otherwise used.)
1489
1490       annex.ssh-options, annex.rsync-options,
1491              annex.rsync-upload-options,  annex.rsync-download-options,   an‐
1492              nex.bup-split-options,    annex.gnupg-options,   annex.gnupg-de‐
1493              crypt-options
1494
1495              Default options to use if a remote does not have  more  specific
1496              options as described above.
1497
1498       remote.<name>.annex-rsyncurl
1499              Used  by  rsync special remotes, this configures the location of
1500              the rsync repository to use. Normally this is automatically  set
1501              up by git annex initremote, but you can change it if needed.
1502
1503       remote.<name>.annex-buprepo
1504              Used by bup special remotes, this configures the location of the
1505              bup repository to use. Normally this is automatically set up  by
1506              git annex initremote, but you can change it if needed.
1507
1508       remote.<name>.annex-borgrepo
1509              Used  by  borg  special remotes, this configures the location of
1510              the borg repository to use. Normally this is  automatically  set
1511              up by git annex initremote, but you can change it if needed.
1512
1513       remote.<name>.annex-ddarrepo
1514              Used  by  ddar  special remotes, this configures the location of
1515              the ddar repository to use. Normally this is  automatically  set
1516              up by git annex initremote, but you can change it if needed.
1517
1518       remote.<name>.annex-directory
1519              Used  by directory special remotes, this configures the location
1520              of the directory where annexed files are stored for this remote.
1521              Normally  this  is automatically set up by git annex initremote,
1522              but you can change it if needed.
1523
1524       remote.<name>.annex-adb
1525              Used to identify remotes on Android devices  accessed  via  adb.
1526              Normally this is automatically set up by git annex initremote.
1527
1528       remote.<name>.annex-androiddirectory
1529              Used  by  adb  special remotes, this is the directory on the An‐
1530              droid device where files are stored for  this  remote.  Normally
1531              this  is  automatically  set up by git annex initremote, but you
1532              can change it if needed.
1533
1534       remote.<name>.annex-androidserial
1535              Used by adb special remotes, this is the serial  number  of  the
1536              Android  device  used  by the remote. Normally this is automati‐
1537              cally set up by git annex initremote, but you can change  it  if
1538              needed, eg when upgrading to a new Android device.
1539
1540       remote.<name>.annex-s3
1541              Used  to  identify  Amazon S3 special remotes.  Normally this is
1542              automatically set up by git annex initremote.
1543
1544       remote.<name>.annex-glacier
1545              Used to identify Amazon Glacier special remotes.  Normally  this
1546              is automatically set up by git annex initremote.
1547
1548       remote.<name>.annex-web
1549              Used to identify web special remotes.  Normally this is automat‐
1550              ically set up by git annex initremote.
1551
1552       remote.<name>.annex-webdav
1553              Used to identify webdav special remotes.  Normally this is auto‐
1554              matically set up by git annex initremote.
1555
1556       remote.<name>.annex-tahoe
1557              Used  to identify tahoe special remotes.  Points to the configu‐
1558              ration directory for tahoe.
1559
1560       remote.<name>.annex-gcrypt
1561              Used to identify gcrypt special remotes.  Normally this is auto‐
1562              matically set up by git annex initremote.
1563
1564              It  is  set to "true" if this is a gcrypt remote.  If the gcrypt
1565              remote is accessible over ssh and has git-annex-shell  available
1566              to manage it, it's set to "shell".
1567
1568       remote.<name>.annex-git-lfs
1569              Used  to identify git-lfs special remotes.  Normally this is au‐
1570              tomatically set up by git annex initremote.
1571
1572              It is set to "true" if this is a git-lfs remote.
1573
1574       remote.<name>.annex-httpalso
1575              Used to identify httpalso special remotes.  Normally this is au‐
1576              tomatically set up by git annex initremote.
1577
1578       remote.<name>.annex-externaltype
1579              Used external special remotes to record the type of the remote.
1580
1581              Eg, if this is set to "foo", git-annex will run a "git-annex-re‐
1582              mote-foo" program to communicate with the external  special  re‐
1583              mote.
1584
1585              If  this  is  set to "readonly", then git-annex will not run any
1586              external special remote program, but will try to  access  things
1587              stored in the remote using http. That only works for some exter‐
1588              nal special remotes, so consult the documentation of the one you
1589              are using.
1590
1591       remote.<name>.annex-hooktype
1592              Used by hook special remotes to record the type of the remote.
1593
1594       annex.web-options
1595              Options  to pass to curl when git-annex uses it to download urls
1596              (rather than the default built-in url downloader).
1597
1598              For example, to force IPv4 only, set it to "-4".
1599
1600              Setting this option makes git-annex use curl, but only when  an‐
1601              nex.security.allowed-ip-addresses  is  configured  in a specific
1602              way. See its documentation.
1603
1604              Setting this option prevents git-annex from using git-credential
1605              for  prompting  for  http  passwords.  Instead,  you can include
1606              "--netrc" to make curl use your ~/.netrc  file  and  record  the
1607              passwords there.
1608
1609       annex.youtube-dl-options
1610              Options  to pass to yt-dlp (or deprecated youtube-dl) when using
1611              it to find the url to download for a video.
1612
1613              Some options may break git-annex's integration with yt-dlp.  For
1614              example, the --output option could cause it to store files some‐
1615              where git-annex won't find them. Avoid setting here  or  in  the
1616              yt-dlp  config  file  any options that cause it to download more
1617              than one file, or to store the file anywhere other than the cur‐
1618              rent working directory.
1619
1620       annex.youtube-dl-command
1621              Default  is  to  use "yt-dlp" or if that is not available in the
1622              PATH, to use "youtube-dl".
1623
1624       annex.aria-torrent-options
1625              Options to pass to aria2c when using it to download a torrent.
1626
1627       annex.http-headers
1628              HTTP headers to send when downloading  from  the  web.  Multiple
1629              lines of this option can be set, one per header.
1630
1631       annex.http-headers-command
1632              If  set,  the command is run and each line of its output is used
1633              as a HTTP header. This overrides annex.http-headers.
1634
1635       annex.security.allowed-url-schemes
1636              List of URL schemes that git-annex is allowed to  download  con‐
1637              tent from.  The default is "http https ftp".
1638
1639              Think  very  carefully  before changing this; there are security
1640              implications. For example, if it's changed to allow "file" URLs,
1641              then  anyone who can get a commit into your git-annex repository
1642              could git-annex addurl a pointer to a private file located  out‐
1643              side that repository, possibly causing it to be copied into your
1644              repository and transferred on to  other  remotes,  exposing  its
1645              content.
1646
1647              Any  url  schemes  supported by curl can be listed here, but you
1648              will also need to configure annex.allowed-ip-addresses to  allow
1649              using curl.
1650
1651              Some  special  remotes  support  their  own  domain-specific URL
1652              schemes; those are not affected by this configuration setting.
1653
1654       annex.security.allowed-ip-addresses
1655              By default, git-annex only makes connections to  public  IP  ad‐
1656              dresses;  it will refuse to use HTTP and other servers on local‐
1657              host or on a private network.
1658
1659              This setting can override that behavior, allowing access to par‐
1660              ticular IP addresses that would normally be blocked. For example
1661              "127.0.0.1 ::1" allows access to localhost (both IPV4 and IPV6).
1662              To allow access to all IP addresses, use "all"
1663
1664              Think  very  carefully  before changing this; there are security
1665              implications. Anyone who can get a commit  into  your  git-annex
1666              repository  could  git  annex addurl an url on a private server,
1667              possibly causing it to be downloaded into  your  repository  and
1668              transferred to other remotes, exposing its content.
1669
1670              Note  that, since the interfaces of curl and yt-dlp do not allow
1671              these IP address restrictions to be enforced,  curl  and  yt-dlp
1672              will   never   be   used   unless  annex.security.allowed-ip-ad‐
1673              dresses=all.
1674
1675              To allow accessing local or private IP addresses  on  only  spe‐
1676              cific   ports,   use  the  syntax  "[addr]:port".  For  example,
1677              "[127.0.0.1]:80 [127.0.0.1]:443 [::1]:80 [::1]:443"  allows  lo‐
1678              calhost on the http ports only.
1679
1680       annex.security.allowed-http-addresses
1681              Old  name for annex.security.allowed-ip-addresses.  If set, this
1682              is treated  the  same  as  having  annex.security.allowed-ip-ad‐
1683              dresses set.
1684
1685       annex.security.allow-unverified-downloads
1686              For security reasons, git-annex refuses to download content from
1687              most special remotes when it cannot check a hash to verify  that
1688              the  correct  content  was downloaded. This particularly impacts
1689              downloading the content of URL or WORM keys, which lack hashes.
1690
1691              The best way to avoid problems due to this is to  migrate  files
1692              away  from such keys, before their content reaches a special re‐
1693              mote.  See git-annex-migrate(1).
1694
1695              When the content is only available from a  special  remote,  you
1696              can  use  this  configuration to force git-annex to download it.
1697              But you do so at your own risk, and it's very important you read
1698              and understand the information below first!
1699
1700              Downloading unverified content from encrypted special remotes is
1701              prevented, because the special remote could send some other  en‐
1702              crypted  content  than what you expect, causing git-annex to de‐
1703              crypt data that you never checked into  git-annex,  and  risking
1704              exposing  the  decrypted  data  to any non-encrypted remotes you
1705              send content to.
1706
1707              Downloading unverified  content  from  (non-encrypted)  external
1708              special  remotes  is  prevented,  because they could follow http
1709              redirects to web servers on localhost or on a  private  network,
1710              or in some cases to a file:/// url.
1711
1712              If  you  decide to bypass this security check, the best thing to
1713              do is to only set it temporarily while running the command  that
1714              gets  the  file.   The value to set the config to is "ACKTHPPT".
1715              For example:
1716
1717               git -c annex.security.allow-unverified-downloads=ACKTHPPT annex
1718              get myfile
1719
1720              It would be a good idea to check that it downloaded the file you
1721              expected, too.
1722
1723       remote.<name>.annex-security-allow-unverified-downloads
1724              Per-remote   configuration    of    annex.security.allow-unveri‐
1725              fied-downloads.
1726

CONFIGURATION OF ASSISTANT

1728       annex.delayadd
1729
1730              Makes  the  watch and assistant commands delay for the specified
1731              number of seconds before adding a newly created file to the  an‐
1732              nex.  Normally this is not needed, because they already wait for
1733              all writers of the file to close it.
1734
1735              Note that this only delays adding files created while the daemon
1736              is  running.  Changes  made when it is not running will be added
1737              immediately the next time it is started up.
1738
1739       annex.expireunused
1740              Controls what the assistant does about unused file contents that
1741              are stored in the repository.
1742
1743              The  default is false, which causes all old and unused file con‐
1744              tents to be retained, unless the assistant is able to move  them
1745              to some other repository (such as a backup repository).
1746
1747              Can  be set to a time specification, like "7d" or "1m", and then
1748              file contents that have been known to be unused for a week or  a
1749              month will be deleted.
1750
1751       annex.fscknudge
1752              When  set  to false, prevents the webapp from reminding you when
1753              using repositories that lack consistency checks.
1754
1755       annex.autoupgrade
1756              When set to ask (the default), the webapp  will  check  for  new
1757              versions  and  prompt if they should be upgraded to. When set to
1758              true, automatically upgrades without  prompting  (on  some  sup‐
1759              ported  platforms).  When  set  to  false,  disables any upgrade
1760              checking.
1761
1762              Note that upgrade checking is only done when  git-annex  is  in‐
1763              stalled  from  one of the prebuilt images from its website. This
1764              does not bypass e.g., a Linux distribution's  own  upgrade  han‐
1765              dling code.
1766
1767              This  setting also controls whether to restart the git-annex as‐
1768              sistant when the git-annex binary is detected to  have  changed.
1769              That is useful no matter how you installed git-annex.
1770
1771       annex.autocommit
1772              Set  to  false to prevent the git-annex assistant, git-annex as‐
1773              sist, and git-annex sync from automatically  committing  changes
1774              to files in the repository.
1775
1776              To  configure the behavior in all clones of the repository, this
1777              can be set in git-annex-config(1).
1778
1779       annex.startupscan
1780              Set to false to prevent the git-annex  assistant  from  scanning
1781              the  repository  for new and changed files on startup. This will
1782              prevent it from noticing changes that were made while it was not
1783              running,  but  can  be  a  useful  performance tweak for a large
1784              repository.
1785
1786       annex.listen
1787              Configures which address the webapp listens on. The  default  is
1788              localhost.   Can be either an IP address, or a hostname that re‐
1789              solves to the desired address.
1790

CONFIGURATION VIA .gitattributes

1792       The key-value backend used when adding a new file to the annex  can  be
1793       configured  on  a  per-file-type basis via .gitattributes files. In the
1794       file, the annex.backend attribute can be set to the name of the backend
1795       to  use.  (See  git-annex-backends(1)  for  information about available
1796       backends.)  For example, this here's how to use the WORM backend by de‐
1797       fault, but the SHA256E backend for ogg files:
1798
1799        * annex.backend=WORM
1800        *.ogg annex.backend=SHA256E
1801
1802       There is a annex.largefiles attribute, which is used to configure which
1803       files are large enough to be added to the annex. Since attributes  can‐
1804       not  contain  spaces,  it  is  difficult  to  use  for more complex an‐
1805       nex.largefiles settings.  Setting  annex.largefiles  in  git-annex-con‐
1806       fig(1) is an easier way to configure it across all clones of the repos‐
1807       itory.  See git-annex-matching-expression(1) for details on the syntax.
1808
1809       The numcopies and mincopies  settings  can  also  be  configured  on  a
1810       per-file-type  basis  via  the  annex.numcopies and annex.mincopies at‐
1811       tributes in .gitattributes files. This overrides other  settings.   For
1812       example, this makes two copies be needed for wav files and 3 copies for
1813       flac files:
1814
1815        *.wav annex.numcopies=2
1816        *.flac annex.numcopies=3
1817
1818       These settings are honored by git-annex whenever it's  operating  on  a
1819       matching file. However, when using --all, --unused, or --key to specify
1820       keys to operate on, git-annex is operating on keys and  not  files,  so
1821       will  not  honor the settings from .gitattributes. For this reason, the
1822       git annex numcopies and git annex mincopies commands are useful to con‐
1823       figure a global default.
1824
1825       Also  note that when using views, only the toplevel .gitattributes file
1826       is preserved in the view, so other settings in other files  won't  have
1827       any effect.
1828

EXIT STATUS

1830       git-annex  itself  will  exit 0 on success and 1 on failure, unless the
1831       --size-limit or --time-limit option is hit, in which case it exits 101.
1832
1833       A few git-annex subcommands have other exit statuses used  to  indicate
1834       specific problems, which are documented on their individual man pages.
1835

ENVIRONMENT

1837       These environment variables are used by git-annex when set:
1838
1839       GIT_WORK_TREE, GIT_DIR
1840              Handled the same as they are by git, see git(1)
1841
1842       GIT_SSH, GIT_SSH_COMMAND
1843              Handled  similarly  to the same as described in git(1).  The one
1844              difference is that git-annex will sometimes pass  an  additional
1845              "-n"  parameter to these, as the first parameter, to prevent ssh
1846              from reading from stdin. Since that can break existing  uses  of
1847              these  environment variables that don't expect the extra parame‐
1848              ter, you will need to set GIT_ANNEX_USE_GIT_SSH=1 to  make  git-
1849              annex support these.
1850
1851              Note that setting either of these environment variables prevents
1852              git-annex from automatically  enabling  ssh  connection  caching
1853              (see  annex.sshcaching),  so  it  will slow down some operations
1854              with remotes over ssh. It's up to you to enable  ssh  connection
1855              caching if you need it; see ssh's documentation.
1856
1857              Also,   annex.ssh-options   and  remote.<name>.annex-ssh-options
1858              won't have any effect when these envionment variables are set.
1859
1860              Usually it's better to configure  any  desired  options  through
1861              your ~/.ssh/config file, or by setting annex.ssh-options.
1862
1863       GIT_ANNEX_VECTOR_CLOCK
1864              Normally  git-annex  timestamps lines in the log files committed
1865              to the git-annex branch. Setting this environment variable to  a
1866              number  will make git-annex use that (or a larger number) rather
1867              than the current number of seconds since the UNIX  epoch.   Note
1868              that decimal seconds are supported.
1869
1870              This  is only provided for advanced users who either have a bet‐
1871              ter way to tell which commit is current than the local clock, or
1872              who need to avoid embedding timestamps for policy reasons.
1873
1874       Some special remotes use additional environment variables
1875              for  authentication  etc.  For  example,  AWS_ACCESS_KEY_ID  and
1876              GIT_ANNEX_P2P_AUTHTOKEN. See special remote documentation.
1877

FILES

1879       These files are used by git-annex:
1880
1881       .git/annex/objects/ in your git repository contains  the  annexed  file
1882       contents that are currently available. Annexed files in your git repos‐
1883       itory symlink to that content.
1884
1885       .git/annex/ in your git repository contains other run-time  information
1886       used by git-annex.
1887
1888       ~/.config/git-annex/autostart  is  a  list of git repositories to start
1889       the git-annex assistant in.
1890
1891       .git/hooks/pre-commit-annex in your git repository will be run whenever
1892       a  commit  is  made to the HEAD branch, either by git commit, git-annex
1893       sync, or the git-annex assistant.
1894
1895       .git/hooks/post-update-annex in your git repository will be  run  when‐
1896       ever  the  git-annex  branch is updated. You can make this hook run git
1897       update-server-info when publishing a git-annex repository by http.
1898

SEE ALSO

1900       More  git-annex  documentation  is   available   on   its   web   site,
1901       <https://git-annex.branchable.com/>
1902
1903       If  git-annex  is installed from a package, a copy of its documentation
1904       should be included, in, for example, /usr/share/doc/git-annex/.
1905

AUTHOR

1907       Joey Hess <id@joeyh.name>
1908
1909       <https://git-annex.branchable.com/>
1910
1911                                                                  git-annex(1)
Impressum