前言: 本文将简单介绍一下Git的基本操作一、 仓库的创建与配置首先从如何让 Git 开始管理项目讲起。1.1 Git安装首先是在我们的电脑上上安装Git, 这里我就以我的云服务器为例需要通过 SSH 工具如 Xshell、Putty 或终端登录到你的云服务器。根据你服务器的操作系统运行对应的安装命令1. Ubuntu / Debian 系统sudoaptupdatesudoaptinstallgit-y2. CentOS / RHEL 系统sudoyuminstallgit-y# 如果是较新的 CentOS Stream 或 Rocky Linux也可以使用 dnf# sudo dnf install git -y如果不知道自己的系统类型,也可以执行以下命令来查看系统cat/etc/os-release3. 验证安装安装完成后输入以下命令检查 Git 版本如果能正确显示版本号说明安装成功git--version由于是在我的云服务上练习,我这里为我设置了root权限, 如果是在本地电脑环境下测试的话,对于风险命令要谨慎执行,看清再按enter哦~~1.2 创建本地仓库管理仓库时一定要有仓库 \o/\o/\o/核心命令git init。操作细节该命令必须在具体的文件目录下执行 。执行后当前目录下会生成一个名为.git的隐藏目录 .注意不要在我们的root根目录下执行该命令,否则会让root目录变为Git仓库,不利于代码管理~~注意事项.git目录是 Git 用来跟踪管理仓库的绝对不要手动修改里面的文件否则容易把仓库破坏掉 。# 1. 创建一个专门存放你代码项目的文件夹比如叫 my-projectmkdirmy-project# 2. 进入这个文件夹cdmy-project# 3. 在这里面重新初始化 Gitgitinit1.3 配置用户信息在安装完 Git 后首先必须设置用户名称和 Email 地址这是非常重要的初始化步骤 。配置命令设置用户名git config [--global] user.name Your Name设置邮箱git config [--global] user.email emailexample.com参数说明--global是一个可选参数 。如果使用该选项表示这台机器上所有的 Git 仓库都会使用这个配置 。如果希望在不同仓库使用不同的信息可以不加--global但执行命令时必须在对应的仓库目录内 。查看与删除配置查看当前配置git config -l。删除对应配置git config [--global] --unset user.name或user.email。二、 核心概念工作区、暂存区与版本库这是理解 Git 运作机理的基本功,也是我们在学习Git的版本控制前必须要掌握的知识工作区Working Directory电脑上实际编写代码或存放文件的目录 。暂存区Staging Area / Index一般存放在.git/index文件中有时也被称为索引index 。版本库Repository工作区中的隐藏目录.git。它包含了暂存区以及 Git 自动创建的唯一master分支和指向该分支的HEAD指针 。版本库中的文件挂载在目录树中,通过HEAD头指针遍历整个目录树就能拿到我们commit的文件三大区域的流转关系 1. 当对工作区修改或新增的文件执行git add时暂存区的目录树会被更新同时文件内容会被写入到对象库.git/objects中 。 2. 当执行git commit时master分支会做相应更新暂存区的目录树才会被真正写到版本库中 。 3.核心结论仅仅在本地目录新建或粘贴文件并不能让仓库管理它。文件必须经过git add和git commit两个步骤才算真正添加到了仓库中 。三、 文件基础管理增、改、查、删3.1 添加文件添加至暂存区 (git add)添加一个或多个指定文件git add [file1] [file2]。添加指定目录含子目录git add [dir]。添加当前目录下的所有文件改动git add .。提交至本地仓库 (git commit)提交暂存区全部内容git commit -m message。提交暂存区的指定文件git commit [file1] [file2] ... -m message。提示-m选项后面的提交描述信息绝对不能省略它是用来记录提交细节、方便人类阅读的 。技巧在实际开发中可以多次执行git add不同的文件最后只需执行一次git commit即可将暂存区的所有修改一同提交 。3.2 查看状态与差异状态查看git status命令用于查看自上次提交之后是否有文件被再次修改或未被添加/提交 。如果工作区和暂存区中同时存在修改文件的话 ,git status 会使用红色和绿色来把他们全部标注出来差异对比 (git diff)虽然使用git status可以得知哪些文件发生的修改操作,但是如果我们想要知道文件做出来何种修改时,我们就该使用git diff命令了git diff [file]显示暂存区和工作区文件之间的差异Unix 通用 diff 格式 。git diff HEAD -- [file]查看版本库与工作区文件之间的区别 。3.3 查看历史提交记录基本查看git log可以查看从最近到最远的提交日志包括 SHA1 计算出来的十六进制巨大数字即版本号commit id、作者、日期以及日志消息 。精简单行查看如果觉得输出信息太多眼花缭乱可以加上参数git log --prettyoneline。或者是更简洁的git log --oneline3.4 删除文件在 Git 中删除同样被视为一种“修改操作” 。如果直接使用系统命令rm file删除了工作区文件会导致工作区和版本库不一致 。情况一不小心误删可以使用git checkout -- file让工作区文件恢复到上一次 add 或 commit 的状态 。情况二确实要从版本库中删除使用git rm [file]将文件从暂存区和工作区中一同删除随后执行git commit提交修改 。四、 版本回退与撤销修改核心难点想象一下你目前手上有一个项目,你修改之后发现最终成效还不如先前版本的,这时候你想要撤销修改操作,也就是想要悔棋怎么办?在 Git 的日常使用中“撤销修改Undo Changes”和“版本回退Rollback/Reset”是两颗核心的“后悔药”。4.1 版本回退 (git reset)版本回退的核心在于“代码已经 Commit 了我想时光倒流。”是把版本库中提交的文件进行回溯操作Git 的版本回退速度非常快本质上只是改变了指向当前分支的指针如refs/heads/master中存储的 commit id 。基本语法git reset [--soft | --mixed | --hard] [HEAD]。假设我们现在有三个提交历史Commit 1 (旧)-Commit 2 (稳)-Commit 3 (当前有Bug的最新提交)你想把版本退回到Commit 2。1.git reset --soft Commit-ID(温柔回退)底层动作仅仅把 HEAD 指针移动到Commit 2。结果Commit 3里的代码改动被保留了下来并且自动放进了暂存区绿色相当于你刚刚做完git add的状态。适用场景你刚做了一个 Commit突然发现注释写错了或者少提交了一个文件。你可以--soft回退一下改改注释或补上文件然后重新 Commit。2.git reset --mixed Commit-ID(默认回退)底层动作把 HEAD 指针移动到Commit 2并重置暂存区。结果Commit 3里的代码改动被保留了下来但放进了工作区红色变成了未暂存状态。如果不带参数直接运行git reset默认就是它。适用场景你连续做了好几次糟糕的提交想把这些提交的代码全部混在一起重新整理、重新分批git add提交。3.git reset --hard Commit-ID(铁腕回退)底层动作把 HEAD 指针移动到Commit 2同时清空暂存区和工作区。结果Commit 3以来写的所有代码彻底物理消失你的电脑目录会瞬间变回Commit 2当时的样子。适用场景当前这个方向彻底搞砸了你确信过去的那个版本才是对的当下的代码一秒钟都不想看到。在版本回退中我们需要用到Commit ID ,但是如果我们提交次数太多了,或者提交间隔时间太长,如何在海量的日志后缀找到需要的Commit ID呢?这时候如果你只记得某个改动跟file1有关想在浩如烟海的日志中单独找出针对它的提交记录可以在git log后面加上--和文件名gitlog--oneline-- file1注意--与文件名之间有一个空格。效果Git 会瞬间帮你过滤掉其他几百个文件的无关提交只打印出与file1发生过关系的 Commit ID。日志量会从几千行瞬间暴降到几行你一眼就能定位到需要的 Commit ID。4.2 撤销修改的三种场景场景一代码仅在工作区修改还没有git add使用git checkout -- [file]命令让工作区文件回到最近一次 add 或 commit 时的状态 。_注意其中的--非常关键省略后会变成其他意思场景二代码已经git add到了暂存区但还没有git commit第一步使用git reset HEAD [file]可以不添加版本回退级别,利用默认的--mixed参数回退暂存区此时工作区代码保持不变 。第二步执行git checkout -- [file]彻底丢弃工作区的修改 。场景三代码已经git commit到了本地仓库直接使用git reset --hard HEAD^回退到上一个版本 。前提条件这部分本地版本库的代码还没有被推送到远程仓库 。以上就是有关Git基本操作的使用和简单介绍,如有纰漏还请大佬指出~~