git的一些问题

2023-03-17 15:12:45 浏览数 (3)

换行符问题

warning: LF will be replaced by CRLF in .gitignore. The file will have its original line endings in your working directory

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF: $ git config –global core.autocrlf true

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换: $ git config –global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中: $ git config –global core.autocrlf false

clone和pull的区别

  • clone——无中生有。原来本地是没有这个项目的,因此将完整的整个项目从仓库clone到本地
  • pull——锦上添花。项目1.0已经在本地上存在,但其他人将项目修改成项目2.0并上传到远程仓库。因此你要做的是将远程仓库中别人做的修改部分pull到本地,让你本地的项目1.0成为项目2.0

git pull origin master

问题

是因为两个根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并

解决--allow-unrelated-histories

配置别名git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

在版本库中删除某个文件的所有历史记录

不小心把账户密码上传到GitHub上

代码语言:javascript复制
# 解决
1 git filter-branch -f --tree-filter 'rm -rf vendor/gems' HEAD
2 git push origin --force

0 人点赞