分类 Git 下的文章

Git 修改已经提交的commit注释

已经执行git commit -m "xxxx注释"命令后,发现注释内容有误,想要修改,怎么办?
分两种情况:

  1. 没有push到远程仓库
  2. 已经push到远程仓库

修改最后一次注释

执行git commit --amend,出现修改界面,进去编辑模式(输入i),修改完成后进入命令模式(按esc),输入:wq保存并退出,即修改完成。

修改之前某次的注释(也包括最后一次,也就是倒数第1次)

  1. 执行 git rebase -i HEAD~3,后面的数字3就代表显示到倒数第几次。
  2. 进入编辑模式,把需要修改的那条注释前面的pick改成edit,保存并退出。
  3. 执行 git commit --amend,修改并保存。
  4. 执行 git rebase --continue
如果是想修改前几次的注释,执行到上面第2步的时候,把多个 pick 改成 edit,然后依次修改即可。

是否需要执行push

假如你没有push到远程,那修改注释的过程就完成了。如果已经将代码push到远程仓库,那么需要先执行pull后再执行上面的步骤。最后,执行 push 命令同步到远程仓库,但要加上 --force 强制覆盖参数,如 git push --force origin dev:dev

确保你push之前没有人提交新的代码,否则别人的修改会被你强制覆盖。

不同操作系统 Git 换行符问题

一、不同操系统下的换行符

CR回车 LF换行

Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r

二、保持换行符一致

打开git bash,设置core.autocrlfcore.safecrlf(可不设置),建议设置autocrlfinputsafecrlftrue,同时设置你的编辑器(Eclipse、Notepad++等)换行符为LF \n
下面为参数说明,--global表示全局设置

2.1、autocrlf

#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input

#提交检出均不转换
git config --global core.autocrlf false

2.2、safecrlf

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn