拓冰建站拓冰建站
首页 / 资讯中心 / 正文

first-contributions 实战指南:使用 git commit --amend 修改已推送的提交

first-contributions 实战指南使用 git commit --amend 修改已推送的提交【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本指南围绕 first-contributions 开源仓库中提供的 Git 进阶教程系统讲解git commit --amend的两种典型用法修改最近一次提交的提交信息以及把遗漏的小改动并入已推送的提交。读完本文你将掌握在不产生多余提交的前提下修正历史提交的完整命令流程并理解修改远程提交时必须使用强制推送的原因与风险边界。背景为什么新手需要学会修改提交在 first-contributions 项目中贡献者会经历完整的开源协作流程fork 仓库、克隆到本地、创建分支、修改 Contributors.md、提交并推送、发起 Pull Request。整个流程参见 白俄罗斯语版入门教程 或 中文版入门教程。在真实协作中提交之后往往才发现问题提交信息里有一个拼写错误或者上一个提交忘记包含某一行修改。此时如果直接再创建一个新提交会让提交历史变得冗长且难以阅读——对于像 first-contributions 这样面向初学者的项目保持清晰、简洁的提交历史尤其重要。这正是git commit --amend的用武之地。在推送后修改最近的提交信息场景一你已经把提交推送到远程仓库随后发现提交信息存在拼写错误。如果不想打开文本编辑器可以直接使用-m参数一步完成修改git commit --amend -m followed by your new commit message git push origin branch-name第一条命令把新的提交信息直接附加给最近一次提交并重写该提交第二条命令把修改后的提交推送到远程仓库其中branch-name替换为你实际的分支名例如 first-contributions 教程中创建的add-your-name分支。关于-m标志的重要说明如果只输入git commit --amendGit 会打开默认文本编辑器提示你编辑提交信息。添加-m标志可以跳过编辑器直接以命令行参数作为新提交信息适合自动化脚本或希望快速完成修改的场景。修改单个提交把遗漏的小改动并入历史场景二你忘记在某个已推送的提交中做一处小修改比如 bot 文件里漏了一个单词。先通过git log查看当前提交历史更多日志查看技巧参见 查看提交日志g56123f create file botfile a2235d updated contributor.md a5da0d modified botfile假设你忘记在botfile中添加一个单词此时有两种修复方式方式一新建一个提交提交历史会变成g56123f create file botfile a2235d updated contributor.md a5da0d modified botfile b0ca8f added single word to botfile方式二修改a5da0d提交把漏掉的单词直接并入该提交最终只推送一个提交。由于这只是一处小改动方式二更为可取——它保持了提交历史的整洁也便于日后整体回滚。方式二的完整操作步骤修改文件编辑botfile补上此前遗漏的单词加入暂存区git add filename执行 amend 而不是新提交通常情况下暂存之后会执行git commit -m our commit message创建新提交但这里的目标是修改上一个提交因此执行git commit --amend这会打开文本编辑器提示你编辑提交信息。你可以保留原信息也可以修改它退出编辑器保存修改推送git push origin branch-name至此文件的改动与提交信息的修正都会合并进同一个提交中。补充若连提交信息都不想改、只想并入文件改动可以在 amend 时配合--no-edit参数保持原提交信息或使用-m直接指定信息避免打开编辑器。修改远程提交理解强制推送的代价英文原版教程 amending-a-commit.md 明确指出amend 本质上不是修改旧提交而是创建一个全新的提交并替换掉旧提交。因此如果目标提交已经推送到远程本地 amend 会导致本地历史与远程历史分叉——远程仍保留旧提交本地则多了个新提交。要让远程仓库也反映修改必须覆盖远程分支的历史即使用强制推送git add your changed files git commit --amend -m followed by your new commit message git push --force警告强制推送会覆盖远程内容警告强制推送到远程将覆盖并丢弃远程上的更改只保留你推送的提交。其他团队成员在此期间对远程的更改也将被覆盖。也就是说git push --force会以本地提交为准整体重写远程分支期间其他成员推送到该分支的提交会全部丢失。更安全的替代--force-with-lease相比裸用--force更稳妥的做法是git push --force-with-lease--force-with-lease只有在远程分支仍处于你上次拉取的状态时才会执行强制推送如果检测到远程已有他人新推送的提交推送会被拒绝从而避免误覆盖团队成员的改动。与相关命令的边界何时该用 amend何时不该在 first-contributions 的 附加材料中文版与 git_workflow_scenarios 目录 中amend 与另外两个常用命令常被并列讨论理解它们的适用边界有助于避免误操作命令适用场景对历史的改写git commit --amend修正最近一次提交的信息或并入小改动重写最近一次提交git reset --hard彻底丢弃本地未推送的提交与改动参见 撤销本地提交删除提交历史git rebase -i squash把多个提交合并为一个参见 合并提交重写多段历史需要特别强调的是git reset --hard这类操作绝不能在已推送到共享仓库后执行否则会给仓库中所有协作者造成混乱。同理amend 只应针对自己尚未被他人依赖的最近提交使用并且在修改已推送提交时务必评估强制推送对团队的影响。在 first-contributions 中的实际演练建议first-contributions 项目的完整贡献流程本身就包含多次提交与推送非常适合作为 amend 的练习场按照 入门教程 完成 fork、clone、创建分支修改 Contributors.md 后git add Contributors.md并提交若发现提交信息写错直接执行git commit --amend -m Add your-name to Contributors list修正推送前用git log确认历史参考 查看提交日志再执行git push origin add-your-name。由于你的个人贡献分支不会被他人共用在该分支上修正已推送提交相对安全而当你开始向共享分支如 main协作时就要严格遵守上一节的强制推送纪律。小结修正提交信息git commit --amend -m new message随后git push origin branch-name并入遗漏的小改动git add filename→git commit --amend→git push origin branch-name修改已推送的远程提交本地 amend 后需git push --force更安全的选择是git push --force-with-lease记住强制推送会覆盖远程历史绝不能覆盖他人尚未合并的改动。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门