Git 使用技巧

date
Sep 5, 2021
slug
postnreg
status
Published
tags
Github
summary
type
Post
 

配置类

忽略文件大小写

Git 默认对于文件名大小写是不敏感,即ignorecase true。如果修改了文件名大小写,但是 Git 并没有发现有任何的改动。所以我一般是设为大小写敏感的,难得去git mv
git config core.ignorecase false

忽略文件属性

Git 默认会跟踪文件的权限修改,即filemode true,当使用 chmod 后,被修改权限的文件添加到被修改的状态。但这个不是必须的,因为大部分代码是源代码,适配平台的默认属性即可,免得不必要的 git 变更。
git config core.filemode false

认证类

HTTP 方式被拒

报错下面之一
remote: HTTP Basic: Access denied fatal: Authentication failed for "http://x.y.z/a.git"// 或git Failed to connect to port xxxx: Connection refused
这两种情况大概率是上次使用的帐户密码,跟现用仓库的帐户密码对不上, 所以就提示用户无权限连接, 或者拒绝访问。所以需要将本地保存 git 帐户密码重置。解决办法是挨个执行下面命令,直到不在报错为止。
git config --unset credential.helper # 进入本地仓库,重置本地仓库的帐密信息git config --global --unset credential.helper # 重置全局的帐密信息git config --system --unset credential.helper # 可选,大部分情况不用。重置系统的帐密信息

分支类

拉取/推送所有分支

在转移仓库时,需先将旧远端仓库的分支全部checkout到本地,然后再推送
notion image
# 将本地分支与远程保持同步
git fetch origin

# 拉取远程分支并同时创建对应的本地分支# 
git checkout -b 本地分支名x origin/远程分支名x

# 拉取所有远端分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

# 推送所有分支到远端
git push origin_new --all

参考资料:
 

© 刘德华 2020 - 2023