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       sync [remote ...]
109              Synchronize local repository with remotes.
110
111              See git-annex-sync(1) for details.
112
113       mirror [path ...] [--to=remote|--from=remote]
114              Mirror content of files to/from another repository.
115
116              See git-annex-mirror(1) for details.
117
118       addurl [url ...]
119              Downloads each url to its own file, which is added to the annex.
120
121              See git-annex-addurl(1) for details.
122
123       rmurl file url
124              Record that the file is no longer available at the url.
125
126              See git-annex-rmurl(1) for details.
127
128       import --from remote branch[:subdir] | [path ...]
129              Add a tree of files to the repository.
130
131              See git-annex-import(1) for details.
132
133       importfeed [url ...]
134              Imports the contents of podcast feeds into the annex.
135
136              See git-annex-importfeed(1) for details.
137
138       export treeish --to remote
139              Export content to a remote.
140
141              See git-annex-export(1) for details.
142
143       undo [filename|directory] ...
144              Undo last change to a file or directory.
145
146              See git-annex-undo(1) for details.
147
148       multicast
149              Multicast file distribution.
150
151              See git-annex-multicast(1) for details.
152
153       watch  Watch for changes and autocommit.
154
155              See git-annex-watch(1) for details.
156
157       assistant
158              Automatically sync folders between devices.
159
160              See git-annex-assistant(1) for details.
161
162       webapp Opens a web app, that allows easy setup of a  git-annex  reposi‐
163              tory,  and  control of the git-annex assistant. If the assistant
164              is not already running, it will be started.
165
166              See git-annex-webapp(1) for details.
167
168       remotedaemon
169              Persistant communication with remotes.
170
171              See git-annex-remotedaemon(1) for details.
172

REPOSITORY SETUP COMMANDS

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

REPOSITORY MAINTENANCE COMMANDS

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

QUERY COMMANDS

365       find [path ...]
366
367              Outputs  a  list of annexed files in the specified path. With no
368              path, finds files in the current directory and  its  subdirecto‐
369              ries.
370
371              See git-annex-find(1) for details.
372
373       whereis [path ...]
374              Displays  information  about where the contents of files are lo‐
375              cated.
376
377              See git-annex-whereis(1) for details.
378
379       list [path ...]
380              Displays a table of remotes that contain  the  contents  of  the
381              specified  files.  This is similar to whereis but a more compact
382              display.
383
384              See git-annex-list(1) for details.
385
386       whereused
387              Finds what files use or used a key.
388
389       log [path ...]
390              Displays the location log for the specified file or files, show‐
391              ing  each  repository  they were added to ("+") and removed from
392              ("-").
393
394              See git-annex-log(1) for details.
395
396       info [directory|file|remote|uuid ...]
397              Displays statistics and  other  information  for  the  specified
398              item,  which  can be a directory, or a file, or a remote, or the
399              uuid of a repository.
400
401              When no item is specified, displays statistics  and  information
402              for the repository as a whole.
403
404              See git-annex-info(1) for details.
405
406       version
407              Shows  the  version  of git-annex, as well as repository version
408              information.
409
410              See git-annex-version(1) for details.
411
412       map    Generate map of repositories.
413
414              See git-annex-map(1) for details.
415
416       inprogress
417              Access files while they're being downloaded.
418
419              See git-annex-inprogress(1) for details.
420
421       findkeys
422              Similar to git-annex find, but operating on keys.
423
424              See git-annex-findkeys(1) for details.
425

METADATA COMMANDS

427       metadata [path ...]
428
429              The content of an annexed file can have any number  of  metadata
430              fields attached to it to describe it. Each metadata field can in
431              turn have any number of values.
432
433              This command can be used to set metadata, or show the  currently
434              set metadata.
435
436              See git-annex-metadata(1) for details.
437
438       view   [tag   ...]   [field=value  ...]  [field=glob  ...]  [?tag  ...]
439       [field?=glob] [!tag ...] [field!=value ...]
440              Uses metadata to build a view branch of the files in the current
441              branch,  and  checks out the view branch. Only files in the cur‐
442              rent branch whose metadata matches all the specified field  val‐
443              ues and tags will be shown in the view.
444
445              See git-annex-view(1) for details.
446
447       vpop [N]
448              Switches  from  the  currently  active view back to the previous
449              view.  Or, from the first view back to original branch.
450
451              See git-annex-vpop(1) for details.
452
453       vfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]
454              Filters the current view to only the files that have the  speci‐
455              fied field values and tags.
456
457              See git-annex-vfilter(1) for details.
458
459       vadd [field=glob ...] [field=value ...] [tag ...]
460              Changes the current view, adding an additional level of directo‐
461              ries to categorize the files.
462
463              See git-annex-vfilter(1) for details.
464
465       vcycle When a view involves nested subdirectories, this cycles the  or‐
466              der.
467
468              See git-annex-vcycle(1) for details.
469

UTILITY COMMANDS

471       migrate [path ...]
472
473              Changes the specified annexed files to use a different key-value
474              backend.
475
476              See git-annex-migrate(1) for details.
477
478       reinject src dest
479              Moves the src file into the annex as the  content  of  the  dest
480              file.   This can be useful if you have obtained the content of a
481              file from elsewhere and want to put it in the local annex.
482
483              See git-annex-reinject(1) for details.
484
485       unannex [path ...]
486              Use this to undo an accidental git annex add  command.  It  puts
487              the file back how it was before the add.
488
489              See git-annex-unannex(1) for details.
490
491       uninit De-initialize git-annex and clean out repository.
492
493              See git-annex-uninit(1) for details.
494
495       reinit uuid|description
496              Initialize repository, reusing old UUID.
497
498              See git-annex-reinit(1) for details.
499

PLUMBING COMMANDS

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

TESTING COMMANDS

646       test
647
648              This runs git-annex's built-in test suite.
649
650              See git-annex-test(1) for details.
651
652       testremote remote
653              This  tests a remote by generating some random objects and send‐
654              ing them to the remote, then redownloading them,  removing  them
655              from the remote, etc.
656
657              It's  safe to run in an existing repository (the repository con‐
658              tents are not altered), although it may perform  expensive  data
659              transfers.
660
661              See git-annex-testremote(1) for details.
662
663       fuzztest
664              Generates random changes to files in the current repository, for
665              use in testing the assistant.
666
667              See git-annex-fuzztest(1) for details.
668
669       benchmark
670              This runs git-annex's built-in benchmarks, if it was built  with
671              benchmarking support.
672
673              See git-annex-benchmark(1) for details.
674

ADDON COMMANDS

676       In  addition  to  all  the  commands listed above, more commands can be
677       added to git-annex by dropping commands named like "git-annex-foo" into
678       a directory in the PATH.
679

CONFIGURATION

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

CONFIGURATION OF REMOTES

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

CONFIGURATION OF ASSISTANT

1694       annex.delayadd
1695
1696              Makes  the  watch and assistant commands delay for the specified
1697              number of seconds before adding a newly created file to the  an‐
1698              nex.  Normally this is not needed, because they already wait for
1699              all writers of the file to close it.
1700
1701              Note that this only delays adding files created while the daemon
1702              is  running.  Changes  made when it is not running will be added
1703              immediately the next time it is started up.
1704
1705       annex.expireunused
1706              Controls what the assistant does about unused file contents that
1707              are stored in the repository.
1708
1709              The  default is false, which causes all old and unused file con‐
1710              tents to be retained, unless the assistant is able to move  them
1711              to some other repository (such as a backup repository).
1712
1713              Can  be set to a time specification, like "7d" or "1m", and then
1714              file contents that have been known to be unused for a week or  a
1715              month will be deleted.
1716
1717       annex.fscknudge
1718              When  set  to false, prevents the webapp from reminding you when
1719              using repositories that lack consistency checks.
1720
1721       annex.autoupgrade
1722              When set to ask (the default), the webapp  will  check  for  new
1723              versions  and  prompt if they should be upgraded to. When set to
1724              true, automatically upgrades without  prompting  (on  some  sup‐
1725              ported  platforms).  When  set  to  false,  disables any upgrade
1726              checking.
1727
1728              Note that upgrade checking is only done when  git-annex  is  in‐
1729              stalled  from  one of the prebuilt images from its website. This
1730              does not bypass e.g., a Linux distribution's  own  upgrade  han‐
1731              dling code.
1732
1733              This  setting also controls whether to restart the git-annex as‐
1734              sistant when the git-annex binary is detected to  have  changed.
1735              That is useful no matter how you installed git-annex.
1736
1737       annex.autocommit
1738              Set  to  false  to prevent the git-annex assistant and git-annex
1739              sync from automatically  committing  changes  to  files  in  the
1740              repository.
1741
1742              To  configure the behavior in all clones of the repository, this
1743              can be set in git-annex-config(1).
1744
1745       annex.startupscan
1746              Set to false to prevent the git-annex  assistant  from  scanning
1747              the  repository  for new and changed files on startup. This will
1748              prevent it from noticing changes that were made while it was not
1749              running,  but  can  be  a  useful  performance tweak for a large
1750              repository.
1751
1752       annex.listen
1753              Configures which address the webapp listens on. The  default  is
1754              localhost.   Can be either an IP address, or a hostname that re‐
1755              solves to the desired address.
1756

CONFIGURATION VIA .gitattributes

1758       The key-value backend used when adding a new file to the annex  can  be
1759       configured  on  a  per-file-type basis via .gitattributes files. In the
1760       file, the annex.backend attribute can be set to the name of the backend
1761       to  use.  (See  git-annex-backends(1)  for  information about available
1762       backends.)  For example, this here's how to use the WORM backend by de‐
1763       fault, but the SHA256E backend for ogg files:
1764
1765        * annex.backend=WORM
1766        *.ogg annex.backend=SHA256E
1767
1768       There is a annex.largefiles attribute, which is used to configure which
1769       files are large enough to be added to the annex. Since attributes  can‐
1770       not  contain  spaces,  it  is  difficult  to  use  for more complex an‐
1771       nex.largefiles settings.  Setting  annex.largefiles  in  git-annex-con‐
1772       fig(1) is an easier way to configure it across all clones of the repos‐
1773       itory.  See git-annex-matching-expression(1) for details on the syntax.
1774
1775       The numcopies and mincopies  settings  can  also  be  configured  on  a
1776       per-file-type  basis  via  the  annex.numcopies and annex.mincopies at‐
1777       tributes in .gitattributes files. This overrides other  settings.   For
1778       example, this makes two copies be needed for wav files and 3 copies for
1779       flac files:
1780
1781        *.wav annex.numcopies=2
1782        *.flac annex.numcopies=3
1783
1784       These settings are honored by git-annex whenever it's  operating  on  a
1785       matching file. However, when using --all, --unused, or --key to specify
1786       keys to operate on, git-annex is operating on keys and  not  files,  so
1787       will  not  honor the settings from .gitattributes. For this reason, the
1788       git annex numcopies and git annex mincopies commands are useful to con‐
1789       figure a global default.
1790
1791       Also  note that when using views, only the toplevel .gitattributes file
1792       is preserved in the view, so other settings in other files  won't  have
1793       any effect.
1794

EXIT STATUS

1796       git-annex  itself  will  exit 0 on success and 1 on failure, unless the
1797       --size-limit or --time-limit option is hit, in which case it exits 101.
1798
1799       A few git-annex subcommands have other exit statuses used  to  indicate
1800       specific problems, which are documented on their individual man pages.
1801

ENVIRONMENT

1803       These environment variables are used by git-annex when set:
1804
1805       GIT_WORK_TREE, GIT_DIR
1806              Handled the same as they are by git, see git(1)
1807
1808       GIT_SSH, GIT_SSH_COMMAND
1809              Handled  similarly  to the same as described in git(1).  The one
1810              difference is that git-annex will sometimes pass  an  additional
1811              "-n"  parameter to these, as the first parameter, to prevent ssh
1812              from reading from stdin. Since that can break existing  uses  of
1813              these  environment variables that don't expect the extra parame‐
1814              ter, you will need to set GIT_ANNEX_USE_GIT_SSH=1 to  make  git-
1815              annex support these.
1816
1817              Note that setting either of these environment variables prevents
1818              git-annex from automatically  enabling  ssh  connection  caching
1819              (see  annex.sshcaching),  so  it  will slow down some operations
1820              with remotes over ssh. It's up to you to enable  ssh  connection
1821              caching if you need it; see ssh's documentation.
1822
1823              Also,   annex.ssh-options   and  remote.<name>.annex-ssh-options
1824              won't have any effect when these envionment variables are set.
1825
1826              Usually it's better to configure  any  desired  options  through
1827              your ~/.ssh/config file, or by setting annex.ssh-options.
1828
1829       GIT_ANNEX_VECTOR_CLOCK
1830              Normally  git-annex  timestamps lines in the log files committed
1831              to the git-annex branch. Setting this environment variable to  a
1832              number  will make git-annex use that (or a larger number) rather
1833              than the current number of seconds since the UNIX  epoch.   Note
1834              that decimal seconds are supported.
1835
1836              This  is only provided for advanced users who either have a bet‐
1837              ter way to tell which commit is current than the local clock, or
1838              who need to avoid embedding timestamps for policy reasons.
1839
1840       Some special remotes use additional environment variables
1841              for  authentication  etc.  For  example,  AWS_ACCESS_KEY_ID  and
1842              GIT_ANNEX_P2P_AUTHTOKEN. See special remote documentation.
1843

FILES

1845       These files are used by git-annex:
1846
1847       .git/annex/objects/ in your git repository contains  the  annexed  file
1848       contents that are currently available. Annexed files in your git repos‐
1849       itory symlink to that content.
1850
1851       .git/annex/ in your git repository contains other run-time  information
1852       used by git-annex.
1853
1854       ~/.config/git-annex/autostart  is  a  list of git repositories to start
1855       the git-annex assistant in.
1856
1857       .git/hooks/pre-commit-annex in your git repository will be run whenever
1858       a  commit  is  made to the HEAD branch, either by git commit, git-annex
1859       sync, or the git-annex assistant.
1860
1861       .git/hooks/post-update-annex in your git repository will be  run  when‐
1862       ever  the  git-annex  branch is updated. You can make this hook run git
1863       update-server-info when publishing a git-annex repository by http.
1864

SEE ALSO

1866       More  git-annex  documentation  is   available   on   its   web   site,
1867       <https://git-annex.branchable.com/>
1868
1869       If  git-annex  is installed from a package, a copy of its documentation
1870       should be included, in, for example, /usr/share/doc/git-annex/.
1871

AUTHOR

1873       Joey Hess <id@joeyh.name>
1874
1875       <https://git-annex.branchable.com/>
1876
1877                                                                  git-annex(1)
Impressum