Skip to content
safegit mv
On this page

move tracked paths and commit the moves with their records in one operation

#safegit mv

move tracked paths and commit the moves with their records in one operation

Effect: mutating

#Flags

Flags
NameShortTypePresenceEnvDescription
--m-mlist[str]requiredcommit message paragraph; repeating it joins the values with a blank line between them, so the first is the subject and the rest are the body
--create-missing-directories, --no-create-missing-directoriesbooloptionalmake the destination's parent directories when they are not there, removing again what this invocation made if the move is rolled back; omitted, and with --no-create-missing-directories, a destination whose directory does not exist is refused and nothing is moved

#Arguments

Arguments
NameTypePresenceDescription
pairslist[str] (variadic)requiredone move each, written 'old -> new'. End BOTH paths with a slash to move a whole directory, which is recorded as ONE subtree record however many files it holds. Quote a path C-style when it holds a space, a quote, a backslash or the arrow itself. Every pair is checked before the first file is touched -- the source must be tracked and on disk, the destination must be free and its directory must already exist unless --create-missing-directories says otherwise, the source must carry no uncommitted content changes, and no two pairs may speak for the same path or chain into one another -- and a failure part-way through puts back everything already moved. The commit is the move and nothing else: each path is carried across as the blob its parent commit held, which is why a path with uncommitted content changes is refused rather than moved -- commit the content first and then move it, or move it on disk yourself and commit both at once with 'safegit commit --moved'

#Grants

Grants
KindNameReason
proc_mutateparent-bumpmoving paths in a submodule moves the parent's gitlink, so safegit commits the parent too when commit.autoBumpParent is on
Search