准备新环境时,我总会在 git 中设置 10 多个项目
当你购买汽车或自行车时,你首先会调整座椅位置和鞍座高度以适合你的体型。git 配置也是如此。
在本文中,我将分享我一直使用的 git 设置。
用户名和邮件地址
git config --global user.name "<name>" && \
git config --global user.email "<email>"
<name>
用我的名字和<email>
我的邮件地址替换。
现有命令的别名
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.br branch
全局忽略设置
git config --global core.excludesfile ~/.gitignore_global
~/.gitignore_global
这允许您在每个项目之外添加您自己的特定忽略设置.gitignore
,这些设置将应用于所有项目的所有 git 操作。
仅推送当前正在处理的分支
git config --global push.default simple
使--rebase
git pull 期间的默认行为
git config --global pull.rebase true
- 如果拉取的分支已在本地修改,这可以防止无意中创建合并提交。
使--prune
git fetch 期间的默认行为
git config --global fetch.prune true
- 这将删除在执行
git fetch
或时远程删除的本地分支。git pull
设置制表符的缩进宽度
git config --global core.pager 'less -x4'
- 在此示例中,pager(
less
命令)选项指定制表符缩进宽度为 4
用作nvim
提交时使用的编辑器
git config --global core.editor 'nvim'
- 我出于不同的目的使用几种不同的文本编辑器,但我更喜欢
nvim
使用git commit
。
合并时请勿快进
git config --global --add merge.ff false
git config --global --add pull.ff only
- 快进合并会使跟踪分支上的工作历史记录变得困难。因此,合并时请避免无意的快进。
git pull
但是,在大多数情况下,快进对于情况1来说都不是问题,因此我们在拉取的情况下强制快进。- 另请参阅:gitのmerge --no-ff のsusume - Qiita
输出结果中的行号git grep
git config --global grep.lineNumber true
可视化空白的差异(包括换行符)
git config diff.wsErrorHighlight all
编辑:2022-07-31
点文件
正如评论中提到的,这些都存储在中.gitconfig
。并且我已将这些设置添加到 dotfiles 存储库。
https://github.com/snaka/my-dotfiles/blob/master/.gitconfig
感谢所有评论的人。
参见
-
根据我的经验,这种情况通常发生在你在本地环境中审查其他人创建的 PullRequest 时临时修改代码。在这种情况下,快进会更好,因为本地更改会汇总到历史记录的顶部,方便你最终撤消更改时使用。↩