菜鸟科技网

Git代码整理常用命令有哪些?

Git 作为分布式版本控制系统的核心工具,其代码整理能力是团队协作和项目维护的关键,通过合理的命令组合,开发者可以高效地管理代码变更、规范提交历史、优化分支结构,从而提升代码质量和开发效率,以下从日常提交、历史修改、分支整理、多人协作四个维度,详细解析 Git 代码整理的核心命令及实践场景。

Git代码整理常用命令有哪些?-图1
(图片来源网络,侵删)

日常提交:规范代码变更记录

日常开发中,规范的提交历史是代码可追溯性的基础,Git 提供了 commit 相关命令,帮助开发者清晰记录每次变更的目的和内容。

基础提交命令

  • git add:将修改的文件暂存到暂存区,是提交的前置步骤,支持灵活的文件选择方式:

    • git add .:添加当前目录下所有修改(包括新文件和修改文件,但不包括删除的文件);
    • git -Agit --all:添加所有修改(包括新文件、修改文件和删除文件);
    • git add <file>:添加指定文件,如 git add src/utils.js 仅暂存该文件。
  • git commit:将暂存区的文件提交到本地仓库,需配合 -m 参数填写提交信息,推荐采用“类型:描述”的规范格式(如 feat: 添加用户登录功能),便于后续通过工具生成变更日志。

修改未提交的记录

开发中常遇到提交信息写错或漏暂存文件的情况,可通过以下命令修正:

Git代码整理常用命令有哪些?-图2
(图片来源网络,侵删)
  • git commit --amend:修改最后一次提交的信息,执行后会进入编辑器,修改提交信息后保存即可(若仅修改信息,无需修改文件,可直接 wq 退出)。
  • 若漏暂存文件,先通过 git add <file> 补充暂存,再执行 git commit --amend,会将新文件合并到上一次提交中,避免产生冗余提交。

历史修改:优化提交历史记录

当需要修改已提交的历史记录(如规范提交格式、合并多次琐碎提交)时,可通过 rebasereset 命令实现。

交互式变基(git rebase -i

rebase 的核心功能是修改提交的基底,常用于整理分支的提交历史。-i 参数进入交互模式,允许对指定范围内的提交进行编辑、合并、删除等操作。

操作步骤

  1. 切换到需要整理的分支,如 git checkout feature/login
  2. 执行 git rebase -i HEAD~3,表示修改最近 3 条提交(HEAD~n 可调整范围);
  3. 编辑器中会列出提交记录,每行格式为 命令 提交哈希 提交信息,常用命令如下:
命令 作用 示例
pick 保留该提交 pick a1b2c3d feat: 添加登录接口
reword 保留提交但修改信息 reword a1b2c3d feat: 完善登录接口
edit 保留提交并暂停,允许修改代码 edit a1b2c3d feat: 调整登录逻辑
squash 合并到前一个提交 squash b2c3d4f fix: 修复登录按钮样式
fixup 合并到前一个提交(丢弃原提交信息) fixup c3d4e5f style: 格式化登录页代码
drop 删除该提交 drop d4e5f6g test: 临时调试代码

场景示例
若某分支有 3 次琐碎提交(如分别修改了按钮样式、调整布局、修复拼写错误),可通过 squash 合并为一次提交:

Git代码整理常用命令有哪些?-图3
(图片来源网络,侵删)
  1. 在交互编辑器中将后两次提交的命令改为 squash,保存退出;
  2. Git 会提示输入合并后的提交信息,统一描述为 style: 优化登录页UI,最终生成一条规范的提交记录。

重置提交历史(git reset

reset 用于回退提交历史,需谨慎使用,尤其是涉及远程分支时。

  • git reset --soft HEAD~1:回退到上一次提交,但保留修改内容在暂存区(适用于撤销提交但需重新修改的情况);
  • git reset --hard HEAD~1:彻底回退到上一次提交,丢弃所有修改(不可逆,慎用);
  • git reset <commit_hash>:回退到指定提交,--soft/--hard 含义同上。

分支整理:优化分支结构与合并

分支是 Git 协作的核心,合理的分支管理和合并策略能避免代码冲突和历史混乱。

分支管理命令

  • git branch:查看分支,-d 删除已合并分支,-D 强制删除未合并分支(如 git branch -D feature/test);
  • git merge:合并分支,支持 --no-ff 参数强制创建合并提交(保留分支历史,适用于功能分支合并);
  • git rebase:变基合并,将当前分支的提交“移动”到目标分支的最新提交之后,形成线形历史(如 git rebase main 将功能分支基于最新 main 分支变基)。

合并策略选择

  • 快进合并(git merge:当目标分支无新提交时,直接移动指针,适合简单场景(如 hotfix 分支合并);
  • 非快进合并(git merge --no-ff:即使目标分支无新提交,也创建合并提交,保留分支信息,适合功能开发;
  • 变基合并(git rebase:适用于功能分支与主分支同步,避免历史分叉(但会修改提交哈希,需确保分支未共享)。

场景示例
功能开发完成后,需合并到 main 分支:

  1. 切换到 main 分支并拉取最新代码:git checkout main && git pull origin main
  2. 切回功能分支并变基:git checkout feature/login && git rebase main
  3. 合并到 main:git merge --no-ff feature/login(保留功能分支历史);
  4. 删除已合并的功能分支:git branch -d feature/login

多人协作:处理远程分支与冲突

团队协作中,远程分支的同步和冲突解决是代码整理的重要环节。

远程分支管理

  • git pull:拉取远程分支更新并合并,默认使用 merge,可通过 --rebase 改用变基(git pull --rebase origin main),保持历史线性;
  • git push:推送本地分支到远程,-u 参数设置上游分支(如 git push -u origin feature/login),后续可直接 git push
  • git fetch:拉取远程更新但不合并,适合查看远程分支状态后再决定如何合并。

冲突解决

当多人修改同一文件的不同部分时,合并或变基可能产生冲突,冲突标记为:

<<<<<<< HEAD   
=======   
>>>>>>> 远程分支  

解决步骤:

  1. 手动修改冲突文件,删除标记并保留正确内容;
  2. 暂存修改文件:git add <file>
  3. 继续合并或变基:git commit(合并冲突)或 git rebase --continue(变基冲突);
  4. 若放弃变基,可执行 git rebase --abort

相关问答FAQs

Q1:git rebasegit merge 有什么区别?如何选择?
A:git merge 会保留分支的完整历史,可能产生合并提交(历史分叉),适合需要保留分支信息的场景(如功能分支合并);git rebase 通过修改提交基底形成线形历史,避免分叉,适合需要整洁提交历史的场景(如日常开发与主分支同步),选择时需注意:若分支已共享给他人,应避免使用 rebase(会修改提交哈希,导致协作混乱)。

Q2:如何清理本地无效的远程分支引用?
A:当远程分支被删除后,本地仍可能保留其引用(执行 git branch -r 可查看),可通过以下命令清理:

  • git remote prune origin:清理本地已失效的远程分支引用(如远程删除了 feature/old,本地执行此命令后,git branch -r 将不再显示);
  • git fetch --prune origin:拉取远程更新的同时清理无效引用,推荐定期执行。
分享:
扫描分享到社交APP
上一篇
下一篇