git Author 和 Committer 区别
最初编写该提交内容的人,通常是你用 git commit 提交时设置的名字。
·
为啥会有author 和 committer 区别
%an(author name)和 %cn(committer name)通常相同,除非你是以协作方式提交(如代他人提交代码)。
个人理解 :因为存在协作方式提交,自己的代码可能被别人提交,为了保留自己的信息,所以引入了author这个概念,为了标记谁提交的代码,有了committer。
| 字段 | 含义 | 说明 |
|---|---|---|
%an(Author Name) |
原始作者 | 谁写了这段代码(最初提交的人) |
%cn(Committer Name) |
实际提交者 | 谁执行了这次 git commit 操作 |
author(作者)
author 是最初编写该提交内容的人,通常是你用 git commit 提交时设置的名字。
git config --global user.name "YourName"
git config --global user.email "your@email.com"
✅ 自己提自己代码
git commit -m "fix: bug in login"
# %an = Your Name (👨💻自己)
# %cn = Your Name (👨💻自己)
Committer(提交者)
最终将改动合并进仓库的人。
git cherry-pick abc1234 # 你 cherry-pick 别人代码
# %an = Other Perso(🧔该提交的原始作者)
# %cn = Your Name (👨💻执行 cherry-pick 操作的是你)
git checkout feature # 注:feature是别人提交的代码
git rebase main # 你帮别人 rebase 代码(将feature分支的提交基于main分支重新应用)
# %an = Other Person(🧔不会改变) 📌即使你修改了代码内容(因为冲突),Git 不会自动更改 author
# %cn = Your Name (👨💻执行 rebase 操作的是你)
git merge --no-commit feature # 你 --no-commit merge别人代码
git commit -m "commit commit"
# %an = Your Name(👨💻你是最终手动提交的人)
# %cn = Your Name(👨💻你是最终手动提交的人)
git merge --squash feature # 你 --squash merge别人代码
git commit -m "commit commit"
# squash 合并丢弃原始提交信息,新提交由你创建
# %an = Your Name(👨💻你是最终手动提交的人)
# %cn = Your Name(👨💻你是最终手动提交的人)
git merge --ff-only release # 你 --ff-only merge 别人代码
# 快进成功 ⇒ 没有新提交,只是移动指针,不修改任何提交内容
# %an = Other Person(🧔不会改变)
# %cn = Other Person(🧔不会改变)
git merge --no-ff release # 你 --no-ff merge 别人代码
# %an = Your Name(👨💻你是最终提交的人)
# %cn = Your Name(👨💻你是最终提交的人)
git merge --no-ff --author="Original Author <email>" release ✅ 如果想保留原作者信息
# %an = Other Perso(🧔手动设置合并提交的 author 为原始贡献者)
# %cn = Your Name (👨💻实际执行合并的人)
git merge release # 你将 release 分支合并到当前分支
git merge --ff release # 你 --ff merge 别人代码
# 依赖到底 ff 还是 no-ff
代码托管平台 Pull Request 合并
Pull Request 合并 (GitHub/Gitee 等平台自动设置 committer)
Create a merge commit(默认合并方式):创建一个合并提交,保留原始分支的所有提交历史。
# author (%an) = 👨💻点击“Merge”按钮的人(即你)
# committer (%cn) = 👨🔧平台系统账号(如 GitHub 的 web-flow 或 github-actions[bot])
Squash and merge:将 PR 所有提交压缩成一个新提交,然后合并到目标分支。
# author (%an) = 👨💻点击“Merge”按钮的人(即你)
# committer (%cn) = 👨🔧平台系统账号(如 GitHub 的 web-flow 或 github-actions[bot])
Rebase and merge:将 PR 分支 rebase 到目标分支上,线性地合并所有原始提交
# author (%an) = 🧔原始提交的作者
# committer (%cn) = 👨🔧平台系统账号(如 GitHub 的 web-flow 或 github-actions[bot])
更多推荐


所有评论(0)