菜鸟科技网

Git常用命令有哪些?

Git 作为当前最流行的分布式版本控制系统,通过一系列命令实现了代码的版本管理、协作开发和分支控制等功能,掌握 Git 相关命令是开发者的必备技能,以下从基础操作、分支管理、合并与冲突解决、远程仓库交互、历史查看与撤销等方面详细介绍常用命令。

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

基础操作命令

基础操作是 Git 日常使用的核心,包括仓库初始化、文件状态管理、提交历史记录等。

  1. git init:在当前目录初始化一个 Git 仓库,创建 .git 隐藏目录,用于存储版本信息。
  2. git clone [仓库地址]:克隆远程仓库到本地,git clone https://github.com/user/repo.git 会下载整个仓库及其历史记录。
  3. git add [文件名]:将文件从工作区添加到暂存区,支持通配符,如 git add . 可添加所有修改的文件(包括新文件),git add -u 仅添加已跟踪文件的修改。
  4. git commit -m "提交信息":将暂存区的文件提交到本地仓库,生成一个新的版本快照,提交信息需清晰描述变更内容。
  5. git status:查看工作区状态,显示未跟踪、已修改、已暂存的文件,帮助开发者快速了解当前仓库状态。
  6. git log:查看提交历史,默认按时间倒序显示每次提交的哈希值、作者、日期和提交信息,可通过参数调整显示格式,如 git log --oneline 简化输出,git log -p 查看每次提交的详细差异。

分支管理命令

分支是 Git 实现并行开发的核心功能,允许开发者在不影响主分支的情况下独立开发功能或修复 bug。

  1. git branch:列出本地所有分支,当前分支会以 标记。git branch -r 查看远程分支,git branch -a 查看所有分支(本地+远程)。
  2. git branch [分支名]:创建新分支,git branch feature/login 创建 feature/login 分支,但不会切换到该分支。
  3. git checkout [分支名]:切换到指定分支,若分支不存在且 -b 参数,则创建并切换,如 git checkout -b dev 相当于 git branch dev + git checkout dev
  4. git merge [分支名]:将指定分支合并到当前分支,例如在 main 分支执行 git merge feature/login,会将 feature/login 的提交历史合并到 main
  5. git branch -d [分支名]:删除本地分支,-D 强制删除(即使分支未合并)。
  6. git switch [分支名](Git 2.23+):checkout 的替代命令,专门用于分支切换,语法更清晰,如 git switch -c new-branch 创建并切换到新分支。

合并与冲突解决命令

当多个分支修改同一文件时,合并可能产生冲突,需手动解决后重新提交。

  1. git merge --abort:合并过程中发生冲突时,取消合并操作,恢复合并前的状态。
  2. git diff [分支名1] [分支名2]:比较两个分支的差异,显示未合并的修改内容,帮助定位冲突文件。
  3. 冲突解决步骤
    • 打开冲突文件, Git 会用 <<<<<<<、、>>>>>>> 标记冲突内容,手动修改并删除标记。
    • 执行 git add [冲突文件] 将解决后的文件添加到暂存区。
    • 运行 git commit 完成合并提交,此时提交信息需明确标注冲突解决。

远程仓库交互命令

远程仓库(如 GitHub、GitLab)是团队协作的关键,通过命令实现本地与远程的同步。

Git常用命令有哪些?-图2
(图片来源网络,侵删)
  1. git remote -v:查看远程仓库别名及其地址,例如显示 origin https://github.com/user/repo.git (fetch)
  2. git push [远程别名] [分支名]:将本地分支推送到远程仓库,如 git push origin main,首次推送时可能需设置 --set-upstream,后续可直接 git push
  3. git pull [远程别名] [分支名]:从远程仓库拉取并合并到当前分支,相当于 git fetch + git merge,若存在冲突,需先解决再提交。
  4. git fetch [远程别名]:获取远程仓库的最新信息,但不会自动合并,需手动执行 git merge
  5. git remote add [别名] [地址]:添加新的远程仓库,如 git remote add upstream https://github.com/original/repo.git 添加上游仓库。

历史查看与撤销命令

Git 提供了强大的历史追溯和版本回滚功能,帮助开发者管理代码变更。

  1. git show [提交哈希]:显示指定提交的详细信息,包括修改的文件内容和提交元数据。
  2. git reset --soft [提交哈希]:软回退,将 HEAD 指针移动到指定提交,暂存区和工作区保持不变,已提交的修改会进入暂存区,可用于重新提交。
  3. git reset --hard [提交哈希]:硬回退,彻底丢弃指定提交之后的所有修改,工作区和暂存区会同步回退,需谨慎使用。
  4. git revert [提交哈希]:创建一个新提交来撤销指定提交的修改,保留历史记录,适合团队协作中回滚公开提交。
  5. git reflog:查看 HEAD 指针的移动历史,可用于恢复被误删的提交或分支,例如通过 git reset --hard [reflog中的哈希] 恢复误删的提交。

标签管理命令

标签用于标记重要版本(如 v1.0.0),分为轻量标签(-a)和注释标签(-s)。

  1. git tag [标签名]:为当前提交创建轻量标签,如 git tag v1.0
  2. git tag -a [标签名] -m "版本说明":创建带注释的标签,存储标签元数据。
  3. git push [远程别名] [标签名]:推送标签到远程仓库,git push --tags 可推送所有标签。
  4. git checkout [标签名]:切换到标签对应的版本,但会进入“分离 HEAD”状态,建议创建新分支后再开发。

相关问答 FAQs

Q1:git resetgit revert 的区别是什么?
A:git reset 是通过移动 HEAD 指针来撤销提交,会修改历史记录(--hard 会丢弃修改,--soft 保留修改到暂存区),适合本地未推送的提交;git revert 是创建一个新提交来抵消指定提交的修改,不改变历史记录,适合回滚已推送到远程的公开提交,避免影响其他开发者。

Q2:如何取消本地未推送的 git commit
A:若提交后未推送,可通过以下方式取消:

Git常用命令有哪些?-图3
(图片来源网络,侵删)
  • 若已 git add 但未 commit:执行 git reset HEAD [文件名] 将文件从暂存区移回工作区,或 git reset HEAD . 撤销所有暂存。
  • 若已 commit:使用 git reset --soft HEAD~1 撤销最后一次提交,修改会保留在暂存区;或 git reset --hard HEAD~1 彻底丢弃提交及修改(慎用)。
分享:
扫描分享到社交APP
上一篇
下一篇