git tips
忽略已经提交到仓库的文件的进一步修改
有的时候,有些文件已经被上传到仓库中,但期望以后的修改不要被track,不要git status
的时候显示修改,便于git add .
直接批量添加所有需要上传的文件。
例如某些config文件,可能本地的改动不应该上传,但是直接gitignore之后git rm --cached <file>
又不是我们想要的,因为我们期望该文件依然存在仓库,只是进一步的修改不要提交到仓库。
具体做法参见:https://stackoverflow.com/a/20241145
浅克隆
有时候从github上拉去软件安装,不需要完整的历史记录,浅克隆即可,这个比较简单。
git clone --depth=1 https://github.com/someproject
但有一个问题是如果有有submodules,例如:
git clone --depth=1 https://github.com/someproject --recursive
虽然项目haskell-ide-engine是浅拷贝,但是其submodules并未触发浅克隆。速度依然很慢。
参见 https://stackoverflow.com/questions/2144406/how-to-make-shallow-git-submodules https://blog.m157q.tw/posts/2017/11/03/what-does-git-clone-shallow-submodules-do-and-how-to-use-it/ https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt
git clone --depth=1 --recurse-submodules https://github.com/someproject
代理
最近github下载特别慢,不得不采用代理下载,git配置代理非常简单:
例如我的代理是http://127.0.0.1:1087
git config --global http.proxy http://127.0.0.1:1087
git config --global https.proxy http://127.0.0.1:1087
如不需要代理则执行:
git config --global --unset https.proxy
git config --global --unset http.proxy
免密
每次push都需要输入账号密码有些烦,关于如何免密网上有各种方式,我现在比较喜欢的一种方式是:
git config --global credential.helper store
将 credential.helper
设置为store
则持久保存,如果想cache缓存,则:
git config --global credential.helper 'cache --timeout 7200'
则过期时间为两小时,此方案仅适用于git高版本,但非常方便。
参见: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
但这种免密方式会遇到一个问题,因为其对所有的项目都采用同一个账号密码,而不能支持多账户,当遇到有种情况push失败时,取消掉此项目的免密模式:
git config credential.helper ""