Git - 移动操作
Git - 移动或重命名文件和目录
Section titled “Git - 移动或重命名文件和目录”Git 提供了 git mv 命令,用于在你的仓库中移动或重命名文件和目录。使用 git mv 很重要,因为它会告诉 Git 文件已被移动或重命名,而不是简单地删除旧文件并添加一个不相关的新文件。这有助于 Git 在重命名后也能跟踪文件的历史。
使用 git mv old_name new_name 等同于运行以下三个命令:
mv old_name new_name(标准的系统移动/重命名命令)git rm old_name(将旧文件名的删除操作添加到暂存区 (staging area))git add new_name(将新文件名的添加操作添加到暂存区)
git mv 命令一步完成所有这些操作,并正确记录重命名。
示例:移动文件
Section titled “示例:移动文件”假设 Tom 决定将源文件 string_utils.c 移动到一个新建的 src/ 目录中。当前项目结构可能如下:
[tom@dev-machine project]$ pwd/home/tom/project
[tom@dev-machine project]$ lsREADME.md string_utils.c MakefileTom 首先创建 src 目录,然后使用 git mv:
[tom@dev-machine project]$ mkdir src
[tom@dev-machine project]$ git mv string_utils.c src/string_utils.c
[tom@dev-machine project]$ git statusOn branch mainYour branch is up to date with 'origin/main'.
Changes to be committed: (use "git restore --staged <file>..." to unstage) renamed: string_utils.c -> src/string_utils.cgit status 输出显示 string_utils.c 已被重命名(移动)。该变更已在暂存区。
示例:重命名文件
Section titled “示例:重命名文件”如果 Tom 想将 README.md 重命名为 README.txt:
[tom@dev-machine project]$ git mv README.md README.txt
[tom@dev-machine project]$ git statusOn branch mainChanges to be committed: (use "git restore --staged <file>..." to unstage) renamed: README.md -> README.txt要将这些变更永久记录到仓库的历史中,Tom 需要提交 (commit) 它们:
[tom@dev-machine project]$ git commit -m "Organized source files into src/ directory and renamed README"[main 7d9ea97] Organized source files into src/ directory and renamed README 2 files changed, 0 insertions(+), 0 deletions(-) rename string_utils.c => src/string_utils.c (100%) rename README.md => README.txt (100%)提交后,Tom 可以将这些变更推送到远程仓库 (remote repository),这样其他开发者(如 Jerry)在 pull (拉取) 时就会看到新的结构:
[tom@dev-machine project]$ git push origin main当 Jerry 拉取这些变更时,他的本地仓库 (local repository) 将反映新的文件位置和名称。
[jerry@dev-machine project]$ git pull origin mainremote: Enumerating objects: ..., done....From github.com:your-repo/project e86f062..7d9ea97 main -> origin/mainUpdating e86f062..7d9ea97Fast-forward string_utils.c | 0 README.md => README.txt | 0 {string_utils.c => src/string_utils.c} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename string_utils.c => src/string_utils.c (100%) rename README.md => README.txt (100%) create mode 100644 src/string_utils.c delete mode 100644 string_utils.c
[jerry@dev-machine project]$ lsREADME.txt src/ Makefile
[jerry@dev-machine project]$ ls src/string_utils.c