如无特别说明,本人的所有Git操作都是以Github为主
git 文档
https://git-scm.com/docs
本地分支删除
查看项目的分支们(包括本地和远程)
1 | $ git branch -a |
删除本地分支
1 | $ git branch -d <BranchName> |
reset 删除错误提交的commit
使用这个的前提条件是没有push,一般不建议push -fgit reset --hard <commit_id>
回退到某一版本。git reset --hard head~1
回退一个版本(数字2自然就是两个版本啦)
然后 git push --force
rebase 伪造历史
git rebase -i HEAD~10
(修改最近10个历史)
下面是rebase打开的文本里命令的提示(git是通过判断进程创建以及进程是否仍然存在来判断用户是否开始、结束编辑,所以多标签的文本编辑器会影响git判断你是否还在编辑)
1 | # p, pick <commit> = use commit |
其中每个历史里的变动占一行,我们只要改前面的pick即可,其中主用的一般是squash,squash会合并改动,再次rebase时是不会拆分的。edit则是修订历史变动里的错误。也可以改动这些变动的顺序。
需要注意的是git里以记录改动为主,如果修改历史变动是会改变现有代码的(特别是你把某个文件的最后一次commit给弄没的时候)。drop 意味着当时进行的修改也会被取消。很容易造成冲突(conflict),
所以一般是建议squash来合并commit
最后 git push --force
这个命令会把远程的彻底抹掉,出问题也会很彻底的,所以要谨慎。
eol & ignoreCase
eol 问题见 [/Code/Git/git eol/]
大小写问题见 https://github.com/Candinya/Kratos-Rebirth/issues/208
1 | git config core.ignorecase false |
不建议使用 -g
配置保存在git/config
git config
git 配置有 全局配置
1 | git config -g |
修改,位于用户文件夹下的.gitconfig
项目个人设置
位于每个项目的.git\config
项目路径下
1 | git config |
修改
还有.gitattributes
这种属于每个项目的预定义配置,通常用于统一项目行为,例如https://github.com/pt-plugins/PT-Plugin-Plus/issues/1981