如果说代码是程序员的作品那 Git 就是守护作品的“时光机”与“协作桥”。日常开发中我们反复修改代码、迭代功能、修复 bug一旦出错需要回溯版本、多人协作需要合并代码、项目迭代需要区分不同版本没有专业工具加持只会陷入“代码备份1、备份2、最终版、最终版真不改了”的混乱困境。Git 的诞生就是为了解决所有版本管理与协作难题。它无需复杂配置轻便高效既能帮个人开发者精准记录每一次代码变更随时回溯任意版本也能支撑大型团队多人并行开发高效解决代码冲突、同步迭代进度。不管是编程初学者还是入行不久的开发者掌握 Git 都是提升编程素养、适配开发工作的第一步。一.安装GitGit 是开放源代码的代码托管工具最早是在Linux下开发的。开始也只能应用于Linux平台后面慢慢的被移植到windows下现在Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。1.Linux-Centos下安装sudo yum install -y git可以输入命令git --version来查看git的版本2.Linux-Ubuntu下安装sudo apt-get install git -y git --version //查看版本二.Git基本操作1.创建Git仓库要提前说的是仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制就必须先创建一个仓库出来。git init //初始化仓库出现以上内容之后就说明本地仓库已经创建完成了1..git文件是什么.git 是 Git本地仓库的核心数据库文件夹存储项目全部提交历史、分支与远程配置支撑所有版本管理功能一旦删除则所有版本记录丢失项目变为普通文件夹。2.配置Gitgit config [--global] user.name Your Name git config [--global] user.email emailexample.com # 把 Your Name 改成你的昵称 # 把 emailexample.com 改成邮箱的格式只要格式正确即可。--global是配置全局Git环境所有的仓库都会被配置如果不加--global只会在当前目录下配置1.查看配置命令 git config -l //查看全局配置 git config --local --list // 查看当前仓库2.删除配置git config [--global] --unset user.name git config [--global] --unset user.email3.重置配置 # 重置当前仓库的user.name、user.email换成你要重置的配置项即可 git config --unset user.name git config --unset user.email # 加上--global参数即可比如重置全局的user.name git config --global --unset user.name git config --global --unset-all user.name git config --local --unset-all //清空当前本地仓库的所有配置 git config --global --unset-all //清空全局Git的所有配置三.认识工作区、暂存区、版本库工作区是在电脑上你要写代码或文件的目录。暂存区英文叫 stage 或 index。一般存放在.git目录下的 index 文件.git/index中我们把暂存区有时也叫作索引index。版本库又名仓库英文名repository。工作区有一个隐藏目录.git它不算工作区而是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来每个文件的修改、删除Git都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻可以“还原”。下面这个图展示了工作区、暂存区和版本库之间的关系在创建 Git 版本库时Git 会为我们自动创建一个唯一的 master 分支以及指向master 的一个指针叫 HEAD。分支和HEAD的概念后面再说当对工作区修改或新增的文件执行git add命令时暂存区目录树的文件索引会被更新。当执行提交操作git commit时master 分支会做相应的更新可以简单理解为暂存区的目录树才会被真正写到版本库中。1.添加文件1.add在包含.git的目录下新建一个 ReadMe 文件我们可以使用git add命令可以将文件添加到暂存区ReadMe也译作自述文件是软件开发、项目工程中位于项目根目录用来介绍说明项目信息的入口文档核心作用是帮助使用者快速了解、上手该项目。添加一个或多个文件到暂存区git add [file1] [file2] ... 添加指定目录到暂存区包括子目录git add [dir] 添加当前目录下的所有文件改动到暂存区git add .2.commit再使用git commit命令将暂存区内容添加到本地仓库中提交暂存区全部内容到本地仓库中: git commit -m message 提交暂存区的指定文件到仓库区git commit [file1] [file2] ... -m message注意git commit后面的-m选项要跟上描述本次提交的message由用户自己完成这部分内容绝对不能省略并要好好描述是用来记录你的提交细节是给我们人看的。1.查看文件状态如果仓库中的文件和我们工作区的文件不同如何查看当前仓库的状态呢git status命令用于查看在你上次提交之后是否有对文件进行再次修改。git status2.查看文件新增内容通过上面操作我们只知道哪个文件被修改但是并不知道文件修改的内容是什么git diff 文件名 //查看文件修改内容3.查看历史提交记录git log git log --prettyoneline //行显示 更美观观察版本库变化2.Git管理文件的本质值得注意是Git追踪的是修改的内容而不是文件四.认识.git文件中的主要内容1.indexindex就是我们的暂存区add 后的内容都是添加到这里的暂存区负责暂存接下来要提交到版本库的内容是Git分层管理提交流程的关键一步。2.HEADHEAD它是Git的当前版本指针通常默认指向当前本地仓库的当前分支默认分支一般是master通过HEAD可以确定当前工作区基于哪个版本提交后HEAD会自动移动指向最新的提交3.objectsobjects为 Git 的对象库里面包含了创建的各种版本库对象及内容。当执行git add命令时暂存区的目录树被更新同时工作区修改或新增的文件内容被写入到对象库中的一个新的对象中就位于.git/objects目录下查找 object 时要将 commit id 分成2部分其前2位是文件夹名称后38位是文件名称。git cat-file -p commit id五.版本回退之前我们也提到过Git能够管理文件的历史版本这也是版本控制器重要的能力。如果有一天你发现之前的工作做的出现了很大的问题需要在某个特定的历史版本重新开始这个时候就需要版本回退的功能了。执行git reset命令用于回退版本可以指定退回某一次提交的版本。要解释一下 “回退” 本质是要将版本库中的内容进行回退工作区或暂存区是否回退由命令参数决定git reset [--soft | --mixed | --hard] [HEAD]--mixed为默认选项使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容工作区文件保持不变。不带文件名版本库 HEAD、暂存区工作区不动 带文件名只操作暂存区完全不动版本库 HEAD--soft参数对于工作区和暂存区的内容都不变只是将版本库回退到某个指定版本。--hard参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令因为工作区会回滚你没有提交的代码就再也找不回了所以使用该参数前一定要慎重。HEAD 说明可直接写成 commit id表示指定退回的版本HEAD/HEAD~0 表示当前版本HEAD^ /HEAD~1 上一个版本HEAD^^ /HEAD~2上上一个版本以此类推...查看本地所有HEAD变动日志git reflog1.仅回退工作区内容git checkout -- 文件名这个命令是丢弃文件在工作区的所有未提交修改将这个文件还原成版本库中当前HEAD指向的版本内容命令执行成功就说明已经完成了文件还原。2.仅回退版本库内容git reset --soft HEAD^2.回退工作区和暂存区内容git reset (--mixed) HEAD 文件名3.回退工作区、暂存区、版本库内容(慎用git reset --hard HEAD^六.删除文件1.第一种情况在 Git 中删除也是一个修改操作我们实战一下如果要删除 file5 文件怎么搞呢如果你这样做了对于这种情况该如何解决呢我们只删除了工作区的文件。这时就需要使用 git rm 将文件从暂存区和工作区中删除并且 commitgit rm 文件名2.第二种情况如果是误删删除也是修改git checkout -- 文件名
Git篇(一): 读懂 Git:从 Linux 安装到底层目录、版本回退完整拆解
如果说代码是程序员的作品那 Git 就是守护作品的“时光机”与“协作桥”。日常开发中我们反复修改代码、迭代功能、修复 bug一旦出错需要回溯版本、多人协作需要合并代码、项目迭代需要区分不同版本没有专业工具加持只会陷入“代码备份1、备份2、最终版、最终版真不改了”的混乱困境。Git 的诞生就是为了解决所有版本管理与协作难题。它无需复杂配置轻便高效既能帮个人开发者精准记录每一次代码变更随时回溯任意版本也能支撑大型团队多人并行开发高效解决代码冲突、同步迭代进度。不管是编程初学者还是入行不久的开发者掌握 Git 都是提升编程素养、适配开发工作的第一步。一.安装GitGit 是开放源代码的代码托管工具最早是在Linux下开发的。开始也只能应用于Linux平台后面慢慢的被移植到windows下现在Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。1.Linux-Centos下安装sudo yum install -y git可以输入命令git --version来查看git的版本2.Linux-Ubuntu下安装sudo apt-get install git -y git --version //查看版本二.Git基本操作1.创建Git仓库要提前说的是仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制就必须先创建一个仓库出来。git init //初始化仓库出现以上内容之后就说明本地仓库已经创建完成了1..git文件是什么.git 是 Git本地仓库的核心数据库文件夹存储项目全部提交历史、分支与远程配置支撑所有版本管理功能一旦删除则所有版本记录丢失项目变为普通文件夹。2.配置Gitgit config [--global] user.name Your Name git config [--global] user.email emailexample.com # 把 Your Name 改成你的昵称 # 把 emailexample.com 改成邮箱的格式只要格式正确即可。--global是配置全局Git环境所有的仓库都会被配置如果不加--global只会在当前目录下配置1.查看配置命令 git config -l //查看全局配置 git config --local --list // 查看当前仓库2.删除配置git config [--global] --unset user.name git config [--global] --unset user.email3.重置配置 # 重置当前仓库的user.name、user.email换成你要重置的配置项即可 git config --unset user.name git config --unset user.email # 加上--global参数即可比如重置全局的user.name git config --global --unset user.name git config --global --unset-all user.name git config --local --unset-all //清空当前本地仓库的所有配置 git config --global --unset-all //清空全局Git的所有配置三.认识工作区、暂存区、版本库工作区是在电脑上你要写代码或文件的目录。暂存区英文叫 stage 或 index。一般存放在.git目录下的 index 文件.git/index中我们把暂存区有时也叫作索引index。版本库又名仓库英文名repository。工作区有一个隐藏目录.git它不算工作区而是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来每个文件的修改、删除Git都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻可以“还原”。下面这个图展示了工作区、暂存区和版本库之间的关系在创建 Git 版本库时Git 会为我们自动创建一个唯一的 master 分支以及指向master 的一个指针叫 HEAD。分支和HEAD的概念后面再说当对工作区修改或新增的文件执行git add命令时暂存区目录树的文件索引会被更新。当执行提交操作git commit时master 分支会做相应的更新可以简单理解为暂存区的目录树才会被真正写到版本库中。1.添加文件1.add在包含.git的目录下新建一个 ReadMe 文件我们可以使用git add命令可以将文件添加到暂存区ReadMe也译作自述文件是软件开发、项目工程中位于项目根目录用来介绍说明项目信息的入口文档核心作用是帮助使用者快速了解、上手该项目。添加一个或多个文件到暂存区git add [file1] [file2] ... 添加指定目录到暂存区包括子目录git add [dir] 添加当前目录下的所有文件改动到暂存区git add .2.commit再使用git commit命令将暂存区内容添加到本地仓库中提交暂存区全部内容到本地仓库中: git commit -m message 提交暂存区的指定文件到仓库区git commit [file1] [file2] ... -m message注意git commit后面的-m选项要跟上描述本次提交的message由用户自己完成这部分内容绝对不能省略并要好好描述是用来记录你的提交细节是给我们人看的。1.查看文件状态如果仓库中的文件和我们工作区的文件不同如何查看当前仓库的状态呢git status命令用于查看在你上次提交之后是否有对文件进行再次修改。git status2.查看文件新增内容通过上面操作我们只知道哪个文件被修改但是并不知道文件修改的内容是什么git diff 文件名 //查看文件修改内容3.查看历史提交记录git log git log --prettyoneline //行显示 更美观观察版本库变化2.Git管理文件的本质值得注意是Git追踪的是修改的内容而不是文件四.认识.git文件中的主要内容1.indexindex就是我们的暂存区add 后的内容都是添加到这里的暂存区负责暂存接下来要提交到版本库的内容是Git分层管理提交流程的关键一步。2.HEADHEAD它是Git的当前版本指针通常默认指向当前本地仓库的当前分支默认分支一般是master通过HEAD可以确定当前工作区基于哪个版本提交后HEAD会自动移动指向最新的提交3.objectsobjects为 Git 的对象库里面包含了创建的各种版本库对象及内容。当执行git add命令时暂存区的目录树被更新同时工作区修改或新增的文件内容被写入到对象库中的一个新的对象中就位于.git/objects目录下查找 object 时要将 commit id 分成2部分其前2位是文件夹名称后38位是文件名称。git cat-file -p commit id五.版本回退之前我们也提到过Git能够管理文件的历史版本这也是版本控制器重要的能力。如果有一天你发现之前的工作做的出现了很大的问题需要在某个特定的历史版本重新开始这个时候就需要版本回退的功能了。执行git reset命令用于回退版本可以指定退回某一次提交的版本。要解释一下 “回退” 本质是要将版本库中的内容进行回退工作区或暂存区是否回退由命令参数决定git reset [--soft | --mixed | --hard] [HEAD]--mixed为默认选项使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容工作区文件保持不变。不带文件名版本库 HEAD、暂存区工作区不动 带文件名只操作暂存区完全不动版本库 HEAD--soft参数对于工作区和暂存区的内容都不变只是将版本库回退到某个指定版本。--hard参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令因为工作区会回滚你没有提交的代码就再也找不回了所以使用该参数前一定要慎重。HEAD 说明可直接写成 commit id表示指定退回的版本HEAD/HEAD~0 表示当前版本HEAD^ /HEAD~1 上一个版本HEAD^^ /HEAD~2上上一个版本以此类推...查看本地所有HEAD变动日志git reflog1.仅回退工作区内容git checkout -- 文件名这个命令是丢弃文件在工作区的所有未提交修改将这个文件还原成版本库中当前HEAD指向的版本内容命令执行成功就说明已经完成了文件还原。2.仅回退版本库内容git reset --soft HEAD^2.回退工作区和暂存区内容git reset (--mixed) HEAD 文件名3.回退工作区、暂存区、版本库内容(慎用git reset --hard HEAD^六.删除文件1.第一种情况在 Git 中删除也是一个修改操作我们实战一下如果要删除 file5 文件怎么搞呢如果你这样做了对于这种情况该如何解决呢我们只删除了工作区的文件。这时就需要使用 git rm 将文件从暂存区和工作区中删除并且 commitgit rm 文件名2.第二种情况如果是误删删除也是修改git checkout -- 文件名