参考:https://www.bbsmax.com/A/E35pOQlBJv/
Git常用命令汇总
Git概念理解
git使用
1、Git 安装
(1)Windows及Mac系统下的安装
Windows:
- 访问 Git 官方网站。
- 下载适用于 Windows 的安装程序(
.exe
文件)。 - 运行下载的安装程序,按照提示进行安装。可以使用默认选项或根据需要进行自定义配置。
- 安装完成后,你可以在开始菜单中找到 “Git Bash” 和 “Git GUI” 两个工具。
Mac:
-
通过 Homebrew 安装(推荐):
-
如果尚未安装 Homebrew,可以通过以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
安装完成后,使用以下命令安装 Git:
brew install git
-
-
通过 Git 官方安装包:
- 访问 Git 官方网站。
- 下载适用于 Mac 的安装程序。
- 运行安装程序,按照提示进行安装。
(2)Linux操作系统下的安装
# 在 Ubuntu 上安装 Git
sudo apt-get install git
# 在 CentOS 上安装 Git
sudo yum install git
(3)检验是否安装成功
-
打开命令行工具:
- Windows:使用 “Git Bash” 或者 “命令提示符”。
- Mac 和 Linux:打开终端(Terminal)。
-
输入以下命令来查看 Git 版本号,确认安装是否成功:
git --version
成功安装后,你将看到类似以下的输出:
git version 2.x.x
-
Windows 特有:
- 安装完成后,你会看到一个叫 “Git Bash” 的命令行工具,这是一个基于 Unix 风格的命令行,可以用来执行 Git 命令。
2、Git 结构和状态
(1)Git 的三层结构
-
Working Directory(工作区)
这是你本地磁盘上实际操作文件的地方,即你正在编辑、修改和查看的文件所在的位置。 -
Staging Area(暂存区)
暂存区是一个临时区域,用于记录你准备提交到版本库的文件和修改。这些文件已被标记为下一次提交的一部分,但尚未正式提交。 -
Git Directory(版本库)
Git 目录(或称为 Repository)是 Git 存储项目历史记录和元数据的地方。当你提交文件时,它们被安全地存储在版本库中。版本库包含所有的提交历史、配置和其他必要的数据。
(2)Git 中文件的 4 种状态
-
Untracked(未被追踪)
文件存在于工作区中,但尚未被 Git 跟踪,即它们没有被添加到暂存区或版本库中。 -
Modified(已修改)
文件已在工作区中进行了修改,但这些更改尚未被添加到暂存区。 -
Staged(已暂存)
文件的修改已被添加到暂存区,准备在下一次提交时一同提交到版本库。 -
Committed(已提交)
文件的修改已被提交到版本库,数据被安全地存储在本地仓库中,并形成了一个新的提交记录。
3、Git 基本命令
# 初始化 git 仓库(创建 .git 目录)
git init
# 将文件添加到暂存区
git add filename
# 将工作目录下所有修改的文件添加到暂存区
git add .
# 将暂存区内的文件提交到版本库,并添加提交说明
git commit -m 'description'
# 跳过 git add 直接将所有已跟踪的文件从工作区提交到版本库
git commit -am 'description'
# 查看提交历史
git log
# 查看项目文件状态
git status
# 配置用户名和邮箱
git config --global user.name "Hayden"
git config --global user.email "544989423@qq.com"
# 查看所有 Git 配置信息
git config --list
4、Git 撤销操作
# 撤销上一次提交,但不改变暂存区的内容,可修改提交说明
git commit --amend
# 撤销工作区中的文件修改,将文件还原到暂存区的状态(区别于切换分支命令 git checkout branchname)
git checkout -- filename
# 撤销暂存区中文件的修改,将其还原到上一次提交的状态(不影响工作区)
git reset HEAD -- filename
# 拉取最近一次提交到版本库的文件,回到暂存区和工作区
git reset --hard HEAD
git reset --option 版本号
# 将暂存区和工作区回退
--hard
# 将版本库和暂存区回退,工作区不变
--mixed
# 将版本库回退,暂存区和工作区不变
--soft
5、Git 文件删除
# 删除工作区和暂存区中的文件,相当于删除文件后执行 git add
git rm filename
# 仅删除暂存区中的文件,保留工作区中的文件(适用于不小心将不需要追踪的文件添加到暂存区时)
git rm --cached filename
# 强制删除工作区和暂存区中的文件(即使文件有修改)
git rm -f filename
# 重命名文件,同时更新 Git 仓库中的记录
git mv oldname newname
# 以上命令等同于以下操作:
mv oldname newname
git rm oldname
git add newname
6、Git 分支
Git 分支的创建、修改、切换、删除
# 查看所有分支
git branch
# 创建新分支
git branch branchname
# 修改分支名称
git branch -m oldname newname
# 切换到指定分支
# -b 选项用于在切换前创建并切换到新分支
git checkout [-b] branchname
# 删除指定分支
git branch -D branchname
# 合并分支
# 需要先切换到接收合并的分支(如 master),然后执行合并命令
git merge branchname
# 比较工作区与暂存区的文件差异
git diff
# 比较暂存区与版本库的文件差异
git diff --staged
# 比较分支内两个版本之间的文件差异
git diff 版本号 版本号
# 比较两个分支的最新提交版本之间的差异
git diff 分支 分支
# 存储当前的工作区状态
# 仅保存工作区的修改,不保存暂存区的修改,并将工作区恢复为最近一次提交的状态(暂存区的修改会丢失)
git stash
# 查看所有存储的记录
git stash list
# 应用指定的存储记录
git stash apply stash@{num}
# 应用最近一次的存储记录
git stash apply
# 删除指定的存储记录
git stash drop stash@{num}
# 应用并删除存储记录
git stash pop
7、远程仓库
# 将本地分支推送到远程仓库
git push 远程仓库地址 分支名
# 拉取远程分支的最新版本并合并到本地分支
git pull 远程仓库地址 分支名
### 远程服务器上的仓库
# 在远程服务器上创建一个裸仓库(没有工作区)
git init --bare
# 给远程仓库起个别名
git remote add name path
# 移除远程仓库的别名
git remote rm name
# 重命名远程仓库的别名
git remote rename oldname newname
# 查看所有远程仓库的详细信息
git remote -v
# 从远程仓库拉取最新的分支和版本信息,但不自动合并
git fetch
# 合并远程仓库的分支到本地分支
git merge
# 检查合并时是否有冲突标记
git diff --check
# Git SSH 免密登录
# 生成 SSH 密钥对
ssh-keygen
# 将本地生成的公钥复制到远程服务器的 authorized_keys 文件中
ssh-copy-id user@host
# 如果无法直接访问服务器,可以将公钥发送给服务器管理员,添加到 authorized_keys 文件中