git介绍与常用命令

git

Git 是一个由 Linus Torvalds 创建的免费、开源的分布式版本控制系统,用于管理计算机文件的变化。它最初是为了更好地管理 Linux 内核的开发而设计的,但现在已经被广泛用于各种规模的软件开发项目中。

Git 的主要特点

  • 分布式架构:每个开发者在本地计算机上都有一份完整的项目历史记录,这使得协作变得容易,并且即使在没有网络连接的情况下也能进行工作。
  • 数据完整性:Git 通过内容的 SHA-1 哈希值来确保代码的完整性和一致性。
  • 强大的分支和合并:Git 提供了非常强大的分支和合并功能,使得开发者可以轻松地在不同的功能、实验或修复中切换,而不必担心会影响到主分支。
  • 速度和性能:Git 在执行大多数操作时都非常快速,包括从大型代码库中克隆和提交。
  • 非线性开发:Git 支持快速、简单的分支和合并,使得非线性的开发流程(例如,同时进行多个功能的开发或修复)成为可能。
  • 轻量级操作:Git 的操作大多数都是添加数据到 Git 数据库中,很少有操作会删除或修改数据。
  • 支持大型项目:Git 能够高效地处理大型项目(例如,Linux 内核)。
  • 工作流灵活性:Git 支持多种工作流程,如集中式工作流、功能分支工作流、Gitflow 工作流和 Forking 工作流等,适应不同规模和需求的项目团队。

Git 的常用工作流程

  • 集中式工作流:适用于小型团队,所有开发者都在同一个分支上工作。
  • 功能分支工作流:每个新功能都在自己的分支上开发,完成后再合并回主分支。
  • Gitflow 工作流:定义了一套严格的分支策略,包括主分支、开发分支、功能分支、发布分支和修复分支。
  • Forking 工作流:每个开发者都有自己的远程仓库(Fork),在本地进行开发和提交,然后将更改通过 Pull Request 提交到主仓库。
  • Git 的安装和使用在不同的操作系统上略有不同,但它提供了图形用户界面(GUI)和命令行界面(CLI),以适应不同开发者的偏好。此外,Git 还有许多第三方工具和服务,如 GitHub、GitLab 和 Bitbucket,它们提供了基于 Git 的代码托管服务,以及代码审查、持续集成等附加功能。

常用命令

初始化和配置

命令 解释
git config --global user.name "Your Name" 设置全局用户名
git config --global user.email "your_email@example.com" 设置全局用户邮箱
git help [command] 获取 Git 命令的帮助信

基本操作

命令 解释
git init 初始化本地 Git 仓库
git clone [url] 克隆远程仓库到本地
git status 查看当前工作目录的状态
git add [file] 将文件添加到暂存区
git add . 添加当前目录下所有更改过的文件到暂存区
git commit -m 'message' 提交暂存区的更改到仓库,并添加提交信息
git commit --amend -m 'message' 修改上一次提交信息
git commit -am 'message' 将工作区更改添加到暂存区并提交
git rm [file] 从暂存区和工作区中删除文件
git log 显示提交日志

分支管理

创建分支

命令 解释
git branch [branch-name] 创建一个新分支,但仍然停留在当前分支。
git checkout -b [branch-name] 创建一个新分支并立即切换到该分支。

切换分支

命令 解释
git checkout [branch-name] 切换到指定的分支。
git switch [branch-name](Git 2.23 版本引入) 切换到指定的分支,这是一个更清晰的命令,专门用于切换分支。

查看分支

命令 解释
git branch 列出所有本地分支。
git branch -a 列出所有本地和远程分支。
git branch -r 列出所有远程分支。
git branch --merged 列出所有已经合并到当前分支的分支。
git branch --no-merged 列出所有尚未合并到当前分支的分支。

合并分支

命令 解释
git merge [branch-name] 将指定分支合并到当前分支。
git merge --no-ff [branch-name] 即使快进合并可能,也创建一个新的提交节点来合并指定分支。
git rebase [base-branch] 将当前分支的更改重新应用到 base-branch 上。这通常会将当前分支的提交移到 base-branch 的最顶端。

删除分支

命令 解释
git branch -d [branch-name] 删除一个已合并到当前分支的分支。
git branch -D [branch-name] 强制删除一个分支,即使它未合并。

重命名分支

命令 解释
git branch -m [old-branch-name] [new-branch-name] 命名当前分支到指定的新分支名。
git branch -D [branch-name] 强制删除一个分支,即使它未合并。

远程分支操作

命令 解释
git push origin [branch-name] 推送本地分支到远程仓库。
git pull 相当于 git fetch 和 git merge 的组合,用于拉取远程分支的更新并合并到当前分支。

检查分支状态

命令 解释
git log --graph --oneline --all 以图形化的方式查看所有分支的提交历史
git log --since=2.week 查看最近两周的提交历史。
git log [source-branch]...[target-branch] 比较两个分支之间的差异。

标签

命令 解释
git tag 创建一个标签。
git tag -a v1.0 -m "版本说明" 创建一个带注释的标签。
git show v1.0 查看标签详情。
git push --tags 推送所有标签到远程仓库

远程仓库

命令 解释
git remote add [shortname] [url] 添加远程仓库
git remote -v 查看所有远程仓库
git fetch [remote] 获取远程仓库的所有更新
git pull [remote] [branch] 获取远程分支更新并合并到本地分支
git push [remote] [branch] 将本地分支推送到远程仓库
git push [remote] --force 强制推送当前分支到远程仓库

撤销和回退

命令 解释
git checkout [file] 撤销工作区的更改
git reset [file] 撤销暂存区的更改
git reset --hard 重置工作区和暂存区到最后一次提交
git revert [commit-hash 创建一个新的提交来撤销指定提交的更改
git stash 暂存当前工作区的更
git stash pop 应用最近一次的暂存更改

查看差异和比较

命令 解释
git diff 显示工作区和暂存区的差异
git diff --cached 显示暂存区和上一次提交的差异
git diff [branch1] [branch2 比较两个分支的差异
git diff [commit-hash] 显示指定提交的详细差异
相关推荐
Franklin7 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗10 小时前
idea中合并git分支
git
我是一只代码狗10 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼11 小时前
git restore
git·git restore
李少兄11 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte11 小时前
git stash
git
产品经理独孤虾13 小时前
GitHub Copilot:产品经理提升工作效率的AI助手
github·copilot·产品经理·原型设计·ai工具·效率提升·prd
杜莱14 小时前
IDEA 安装AI代码助手GitHub Copilot和简单使用体验
人工智能·github·intellij-idea
LogicFlow15 小时前
对单调的画布说拜拜👋🏻
前端框架·开源·github