mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
1cbd18300a
The "Submodules" section of the "git mv" documentation mentions what will happen when a submodule with a gitfile gets moved with newer git. But it doesn't talk about what happens when the user changes between commits before and after the move, which does not update the work tree like using the mv command did the first time. Explain what happens and what the user has to do manually to fix that in the new BUGS section. Also document this behavior in a new test. Reported-by: George Papanikolaou <g3orge.app@gmail.com> Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
git-mv(1)
|
|
=========
|
|
|
|
NAME
|
|
----
|
|
git-mv - Move or rename a file, a directory, or a symlink
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git mv' <options>... <args>...
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
Move or rename a file, directory or symlink.
|
|
|
|
git mv [-v] [-f] [-n] [-k] <source> <destination>
|
|
git mv [-v] [-f] [-n] [-k] <source> ... <destination directory>
|
|
|
|
In the first form, it renames <source>, which must exist and be either
|
|
a file, symlink or directory, to <destination>.
|
|
In the second form, the last argument has to be an existing
|
|
directory; the given sources will be moved into this directory.
|
|
|
|
The index is updated after successful completion, but the change must still be
|
|
committed.
|
|
|
|
OPTIONS
|
|
-------
|
|
-f::
|
|
--force::
|
|
Force renaming or moving of a file even if the target exists
|
|
-k::
|
|
Skip move or rename actions which would lead to an error
|
|
condition. An error happens when a source is neither existing nor
|
|
controlled by Git, or when it would overwrite an existing
|
|
file unless '-f' is given.
|
|
-n::
|
|
--dry-run::
|
|
Do nothing; only show what would happen
|
|
|
|
-v::
|
|
--verbose::
|
|
Report the names of files as they are moved.
|
|
|
|
SUBMODULES
|
|
----------
|
|
Moving a submodule using a gitfile (which means they were cloned
|
|
with a Git version 1.7.8 or newer) will update the gitfile and
|
|
core.worktree setting to make the submodule work in the new location.
|
|
It also will attempt to update the submodule.<name>.path setting in
|
|
the linkgit:gitmodules[5] file and stage that file (unless -n is used).
|
|
|
|
BUGS
|
|
----
|
|
Each time a superproject update moves a populated submodule (e.g. when
|
|
switching between commits before and after the move) a stale submodule
|
|
checkout will remain in the old location and an empty directory will
|
|
appear in the new location. To populate the submodule again in the new
|
|
location the user will have to run "git submodule update"
|
|
afterwards. Removing the old directory is only safe when it uses a
|
|
gitfile, as otherwise the history of the submodule will be deleted
|
|
too. Both steps will be obsolete when recursive submodule update has
|
|
been implemented.
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|