1
0
wiki/FormalSciences/ComputerScience/GettingStarted/2.VersionControl/Git/2.Advanced/2.2-常用技巧.md
2024-10-14 16:48:38 +08:00

9.2 KiB
Raw Blame History

title description keywords tags author date
常用技巧 Git 常用技巧
Git
技巧
FormalSciences/ComputerScience
GettingStarted/VersionControl
Git/Advanced
7Wate 2022-09-13

Config 配置

Git 配置文件分为三级,系统级(--system、用户级--global和目录级--local三者的使用优先级以离目录repository最近为原则如果三者的配置不一样则生效优先级 目录级>用户级>系统级

  • 系统级/etc/gitconfig使用 --system 来进行配置,该配置对系统上所有用户及他们所拥有的仓库都生效的配置值。
git config --system user.name "用户名"
git config --system user.email "邮箱地址"`
  • 用户级~/.gitconfig使用 --global 来进行配置,该配置对当前用户上所有的仓库有效
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
  • 目录级.git/config使用 --local 来进行配置,只对当前仓库生效。
git config --local user.name "用户名"
git config --local user.email "邮箱地址"

设置默认分支

可以根据需求设置为系统级(--system、用户级--global和目录级--local

git config --global init.defaultBranch <分支名称>
# 设置默认分支 main
git config --global init.defaultBranch main

多平台换行符问题 (LF or CRLF)

**文本文件所使用的换行符,在不同的系统平台上是不一样的。**UNIX/Linux 使用的是 0x0ALF早期的 Mac OS 使用的是 0x0DCR后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0ACRLF 作为换行符。

# 提交时转换为LF检出时转换为CRLF
git config --global core.autocrlf true
# 提交时转换为LF检出时不转换
git config --global core.autocrlf input
# 提交检出均不转换
git config --global core.autocrlf false
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
# 允许提交包含混合换行符的文件
git config --global core.safecrlf false
# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

如果涉及到在多个系统平台上工作,推荐将 git 做如下配置:

git config --global core.autocrlf input
git config --global core.safecrlf true

Alias 重命名别名

git config --global alias.st status //status 缩写成 st
git config --global alias.co checkout //checkout 缩写成 co
git config --global alias.br branch //branch 缩写成 br
git config --global alias.ci commit //commit 缩写成 ci
alias g='git'
alias ga='git add'
alias gco='git checkout'
alias gcb='git checkout -b'
alias gcm='git checkout master'
alias gcd='git checkout develop'
alias gd='git diff'
alias gf='git fetch'
alias gfo='git fetch origin'
alias gl='git pull'
alias gp='git push'

Git 常用命令,可以根据实际需要创建缩写命令。

GPG 签名提交

创建新的GPG 密钥

  1. 生成 GPG 密钥对
// 1.1 创建 GPG 密钥
gpg --full-gen-key

// 1.2 列出 GPG 密钥
gpg --list-secret-keys --keyid-format LONG "your_email@example.com"

// 1.3 复制 GPG 密钥 ID以下示例复制 4AEA00A342C24CA3。
sec   ed25519/4AEA00A342C24CA3 2021-09-14 [SC]
      6DE3507E82DEB6E8828FAAC34AEA00A342C24BD4
uid                 [ 绝对 ] your_name "your_email@example.com"
ssb   cv25519/812B586FD245B560 2021-09-14 [E]

// 1.4 导出 GPG 公钥(以上述 ID 为例)
gpg --armor --export 4AEA00A342C24CA3
  1. 平台添加 GPG 公钥配置

将 GPG 公钥添加到 git 托管平台,例如 Github、Gitlab、Gitee 等。

  1. 本地 Git 仓库关联 GPG 密钥
// 3.1 列出 GPG 密钥
gpg --list-secret-keys --keyid-format LONG "your_email@example.com"

// 3.2 复制 GPG 密钥 ID以下示例复制 4AEA00A342C24CA3。
sec   ed25519/4AEA00A342C24CA3 2021-09-14 [SC]
      6DE3507E82DEB6E8828FAAC34AEA00A342C24BD4
uid                 [ 绝对 ] your_name "your_email@example.com"
ssb   cv25519/812B586FD245B560 2021-09-14 [E]

// 3.3 本地 Git 仓库中配置该密钥,对 commit 提交进行签名。
git config --global user.signingkey 4AEA00A342C24CA3
  1. 签名 Git commit

运行 Git commit 命令时需要用到 -S 参数,如果不希望每次都要输入 -S 标志,可以配置默认签名。

// 签名提交
git commit -S -m "your_commit_message"

// 开启默认签名提交
git config --global commit.gpgsign true
  1. 验证签名

最后可以推送签名提交到 git 托管平台,验证是否签名成功!

导入已有的 GPG 密钥

如果你已经有现成的 GPG 密钥,可以导入并使用。

  1. 导入 GPG 私钥

    gpg --import your_private_key_file
    
  2. 导入 GPG 公钥

    gpg --import your_public_key_file
    
  3. 信任导入的 GPG 密钥

    gpg --edit-key your_key_id
    gpg> trust
    gpg> 5 (ultimate trust)
    gpg> quit
    
  4. 重复创建新的GPG 密钥中的第三步。

压缩提交记录

如果在新分支进行了多次提交,然后想合并到主分支。可以使用 --squash 选项,压缩合并提交。

// 将目标分支的提交压缩为一个,然后合并分支
git merge --squash <branchName>

忽略文件更改

  • 未提交:添加忽略文件相对路径到 .gitignore 中即可。

  • 已提交:git rm --cached file,添加忽略文件相对路径到 .gitignore 中即可。

配置 Git 的凭据存储

当使用 Git 进行代码管理时,你可以配置 Git 的凭据存储,这样就不需要每次都输入用户名和密码。下面是详细的步骤:

使用凭证缓存

  1. 开启凭证缓存

    git config --global credential.helper cache
    
  2. 设置缓存超时时间(默认为 15 分钟,以下示例设置为 1 小时):

    git config --global credential.helper 'cache --timeout=3600'
    

使用凭证管理器

Git for Windows 以及较新的 Git 版本提供了凭证管理器Credential Manager可以在多平台下存储和管理凭证。

  1. Windows 用户

    git config --global credential.helper manager
    
  2. MacOS 用户

    git config --global credential.helper osxkeychain
    
  3. Linux 用户

    git config --global credential.helper cache
    

使用凭证存储

这种方法会将凭证以纯文本的方式存储在磁盘上,安全性较低。

  1. 开启凭证存储

    git config --global credential.helper store
    
  2. 第一次使用 Git 操作时输入用户名和密码后,凭证会被保存到磁盘

  3. 使用 cat 命令查看 .git-credentials 文件的内容

    cat ~/.git-credentials
    

请注意,使用 store 凭据存储方式会将密码明文保存在磁盘上,所以请确保你的机器是安全的,并且不要在共享或公共设备上使用该功能。

全局的 Git 日志美化

可以使用 git config --global format.pretty 设置一个全局的 Git 日志格式化语句。

git config --global format.pretty "%C(red)%h%C(reset) - %C(yellow)%d%C(reset) %s %C(green)(%cr) %C(bold blue)<%an>%C(reset)"

常用的配置选项及其描述:

配置选项 描述
%H 提交的完整哈希字符串
%h 提交的简短哈希字符串
%T 树的完整哈希字符串
%t 树的简短哈希字符串
%P 父节点的完整哈希字符串
%p 父节点的简短哈希字符串
%an 作者的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date=选项定制格式)
%ar 作者修订日期相对格式例如“2 weeks ago”
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,相对格式
%s 提交信息标题
%b 提交信息正文
%Cred 文字颜色为红色
%Cgreen 文字颜色为绿色
%Cblue 文字颜色为蓝色
%Creset 重置前面设置的颜色
%C(yellow) 文字颜色为黄色
%d 修饰(比如分支名,标签名)
%D 修饰的完整列表