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] 显示指定提交的详细差异
相关推荐
binishuaio26 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。1 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie63 小时前
在IDEA中使用Git
java·git
小牛itbull5 小时前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
晓理紫12 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿13 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
鱼满满记13 小时前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
梦魇梦狸º15 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
_OLi_20 小时前
IDEA中新建与切换Git分支
java·spring boot·git
Huazie20 小时前
一篇搞定 Hexo Diversity 主题接入!支持多主题自由切换!
javascript·github·hexo