[Git]重命名操作遇小插曲?
常规操作命令行方式
在 Git 中,文件的重新命名操作是通过将原有文件删除,再新建一个同名文件来完成的。可以使用以下命令完成此操作:
git mv old_filename new_filename
执行此命令后,Git 会将原有文件删除并将新文件添加到暂存区。在执行 git commit
命令后,文件重命名操作就完成了。
手动命名后的小插曲
我没用命令行方式,当手动右键 rename 文件名只改变了大小写。
淦!怎么本地大小写变了,线上怎么两个文件都在?😭
这是因为 Git 默认是区分大小写的,所以在本地修改文件名大小写后,Git 认为这是一个新文件,而线上仍旧保留原文件名。如果需要修改文件名大小写,在 Git 中需要进行如下操作:
- 先将文件名修改为其他名称
- 将该文件从 Git 中删除
- 将修改后的文件重新添加到 Git 中
经过以上操作后,文件名的大小写就被成功修改了。
但这个不优雅。比较好的做法是:
在 Git 中,可以通过设置 core.ignorecase
选项来解决文件名大小写问题。将该选项设置为 false
,即可关闭大小写敏感模式,使 Git 在处理文件名时不再区分大小写。具体操作步骤如下:
git config core.ignorecase false
执行此命令后,再通过 git mv
命令修改文件名大小写即可,不必进行繁琐的删除和重新添加操作。
如果你已经提交了多次,但 Git history 看起来很混乱咋整?继续往下看。
修改历史提交
如果在上面的操作中已经提交了,建议使用 git rebase
命令来修改提交历史。具体操作步骤如下:
- 使用
git log
命令查看提交历史,并记录需要修改的提交的 SHA-1 值。 - 使用
git rebase -i <commit>
命令进入交互式的 rebase 模式,其中<commit>
是需要修改的提交的 SHA-1 值。 - 在弹出的编辑器中,将需要修改的提交的行改为
edit
,保存并退出编辑器。 - 使用
git mv old_filename new_filename
命令修改文件名。 - 使用
git add .
命令将修改后的文件添加到暂存区。 - 使用
git commit --amend
命令修改提交信息。 - 使用
git rebase --continue
命令继续 rebase 操作。 - 修改后需要使用
git push --force
命令强制推送修改后的提交
需要注意的是,使用 git rebase
命令修改提交历史会改变提交的 SHA-1 值,因此不建议在公共分支上进行此类操作。如果需要修改公共分支的提交历史,建议使用 git revert
命令创建新的提交来撤销原有提交的更改。
但是,但是。。。
这也太烦了吧,直接用交互式 rebase 不好么?🤔
交互式修改
当然可以,交互式 rebase 可以轻松实现这个功能。具体操作步骤如下:
- 使用
git rebase -i HEAD~n
命令进入交互式的 rebase 模式,其中n
是要修改的提交数。 - 在弹出的编辑器中,将需要修改的行的命令改为
edit
,保存并退出编辑器。 - 使用
git mv old_filename new_filename
命令修改文件名。 - 使用
git add .
命令将修改后的文件添加到暂存区。 - 使用
git commit --amend
命令修改提交信息。 - 使用
git rebase --continue
命令继续 rebase 操作。 - 修改后需要使用
git push --force
命令强制推送修改后的提交
和上面一样的原因,不建议在公共分支上进行此类操作。当然同事不打你,也可以当我没说😂
最后
感谢阅读本文介绍的 Git 文件重命名操作遇到的小插曲。希望这些操作能够帮助你更好地使用 Git 进行代码管理。
转载自:https://juejin.cn/post/7205182602365059109