likes
comments
collection
share

[Git]重命名操作遇小插曲?

作者站长头像
站长
· 阅读数 17

常规操作命令行方式

在 Git 中,文件的重新命名操作是通过将原有文件删除,再新建一个同名文件来完成的。可以使用以下命令完成此操作:

git mv old_filename new_filename

执行此命令后,Git 会将原有文件删除并将新文件添加到暂存区。在执行 git commit 命令后,文件重命名操作就完成了。

手动命名后的小插曲

我没用命令行方式,当手动右键 rename 文件名只改变了大小写。

淦!怎么本地大小写变了,线上怎么两个文件都在?😭

这是因为 Git 默认是区分大小写的,所以在本地修改文件名大小写后,Git 认为这是一个新文件,而线上仍旧保留原文件名。如果需要修改文件名大小写,在 Git 中需要进行如下操作:

  1. 先将文件名修改为其他名称
  2. 将该文件从 Git 中删除
  3. 将修改后的文件重新添加到 Git 中

经过以上操作后,文件名的大小写就被成功修改了。

但这个不优雅。比较好的做法是:

在 Git 中,可以通过设置 core.ignorecase 选项来解决文件名大小写问题。将该选项设置为 false,即可关闭大小写敏感模式,使 Git 在处理文件名时不再区分大小写。具体操作步骤如下:

git config core.ignorecase false

执行此命令后,再通过 git mv 命令修改文件名大小写即可,不必进行繁琐的删除和重新添加操作。

如果你已经提交了多次,但 Git history 看起来很混乱咋整?继续往下看。

修改历史提交

如果在上面的操作中已经提交了,建议使用 git rebase 命令来修改提交历史。具体操作步骤如下:

  1. 使用 git log 命令查看提交历史,并记录需要修改的提交的 SHA-1 值。
  2. 使用 git rebase -i <commit> 命令进入交互式的 rebase 模式,其中 <commit> 是需要修改的提交的 SHA-1 值。
  3. 在弹出的编辑器中,将需要修改的提交的行改为 edit,保存并退出编辑器。
  4. 使用 git mv old_filename new_filename 命令修改文件名。
  5. 使用 git add . 命令将修改后的文件添加到暂存区。
  6. 使用 git commit --amend 命令修改提交信息。
  7. 使用 git rebase --continue 命令继续 rebase 操作。
  8. 修改后需要使用 git push --force 命令强制推送修改后的提交

需要注意的是,使用 git rebase 命令修改提交历史会改变提交的 SHA-1 值,因此不建议在公共分支上进行此类操作。如果需要修改公共分支的提交历史,建议使用 git revert 命令创建新的提交来撤销原有提交的更改。

但是,但是。。。

这也太烦了吧,直接用交互式 rebase 不好么?🤔

交互式修改

当然可以,交互式 rebase 可以轻松实现这个功能。具体操作步骤如下:

  1. 使用 git rebase -i HEAD~n 命令进入交互式的 rebase 模式,其中 n 是要修改的提交数。
  2. 在弹出的编辑器中,将需要修改的行的命令改为 edit,保存并退出编辑器。
  3. 使用 git mv old_filename new_filename 命令修改文件名。
  4. 使用 git add . 命令将修改后的文件添加到暂存区。
  5. 使用 git commit --amend 命令修改提交信息。
  6. 使用 git rebase --continue 命令继续 rebase 操作。
  7. 修改后需要使用 git push --force 命令强制推送修改后的提交

和上面一样的原因,不建议在公共分支上进行此类操作。当然同事不打你,也可以当我没说😂

最后

感谢阅读本文介绍的 Git 文件重命名操作遇到的小插曲。希望这些操作能够帮助你更好地使用 Git 进行代码管理。