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 显示指定提交的详细差异
相关推荐
OsDepK5 小时前
OSMDE手机AI编程,一键Git
git·ai编程
lpfasd1238 小时前
2026年第24周科技社区趋势周报
github
今夕资源网10 小时前
github开源 网页在线音频转文本工具 node.js+html源码
github·音频转文本·音频转字幕·音频转srt·音频转srt字幕文件·音频转lrc·音频转txt
用什么都重名11 小时前
Git分支合并与远程服务器同步实战:保留关键配置文件
运维·服务器·git
得要找到一束光12 小时前
git详细命令
git·github
LeahDizon12 小时前
AI Coding 协作实践方案
程序员·github·代码规范
2601_9618752414 小时前
花生十三公考课程|网课|视频
数据库·windows·git·svn·eclipse·github
带娃的IT创业者16 小时前
GitHub 热门: coleam00/Archon —— 当 AI Agent 学会自我进化
人工智能·github·开源项目·ai agent·智能体·自我进化
lpfasd12316 小时前
2026年第24周GitHub趋势周报
github
江畔柳前堤17 小时前
github实战指南03-Pull Request 全流程实战
开发语言·人工智能·python·深度学习·github·word