一文带你精通 Git(Git 安装与使用Git 命令精讲项目的推送与克隆)
Posted 前端小马
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文带你精通 Git(Git 安装与使用Git 命令精讲项目的推送与克隆)相关的知识,希望对你有一定的参考价值。
目录
一、什么是 GIT
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力。
当代码量很大,而且需要人工的处理不同的版本时,如果仅仅通过拷贝来做相应备份是非常麻烦的,这时候就需要用 Git 来管理我们的代码。而且 Git 可以随意进行版本的切换,假如我们不再想用修改后的版本二,只需要用 GIt 将其还原为版本一即可。
二、GIT 的安装
安装GIt 很简单,与其他软件没有区别,在软件商店直接下载安装即可,我用的是软件盒子;
随后出现弹框,依次点击“下一步”。需要注意的是记住 Git 的安装路径,因为想要在开发软件使用 Git 仅仅下载安装还不行,还需要在开发软件中进行配置。
安装完成后 Git 目录如下:
Git 命令相关操作命令在 git-bash 中书写,git-bash 也可以直接在桌面右键打开。
三、使用 Git 管理项目
1. 准备
首先我们在电脑桌面创建一个文件夹,我们将它命名为 project,假设这个 project 文件夹就是我们所开发的项目。接下来通过 Git 对我们的“项目”进行相关管理。
在 project 文件夹下 右键 --> Git Bash Here 打开 Git 命令行;
2. 初始化 Git 仓库
在 Git 命令行中 git init 新建一个文件夹,用于管理我们的代码;git 指的是我们使用 Git 这款软件进行管理,init 意为初始化;
按下回车后会提示创建成功:在 C:/Users/Administrator/Desktop/project/.git/ 目录下初始化空的 Git 存储库,也可以说是空的 Git 仓库。
注意刚刚创建后 .git 是一个隐藏目录,我们需要设置开启隐藏才能看到该目录。在文件夹点击 查看 --> 显示 --> 隐藏的项目。
如下,项目目录中已经有了我们创建的空的 Git 仓库。之后 Git 会自动帮我们将代码备份到这个 .git 目录当中。
初始化 Git 仓库完成之后,就可以在 project 目录中正常进行开发了。
3. 配置 Git 使用者的用户名和邮箱
使用 git config --global user.name "用户昵称" 配置用户名,输入命令后回车,没有任何提示,则说明用户名设置成功;
使用 git config --global user.email "用户邮箱" 配置用户邮箱;同样没有任何提示,说明设置成功。
进行以上配置后,Git 除每次会将我们的项目相关文件自动备份至 .git 仓库之外,也会自动存储我们的个人信息,这样就知道每一次操作是由谁来进行的了。
4. 将代码存储到 Git 仓库中
我们在项目目录 project 中 创建一个文件 test.html,作为代码文件用于存储。
将代码文件存储至 Git 仓库需要两步,首先使用 git add ./添加的文件名 添加代码文件至暂存区,此处的相对路径 ./ 就代表当前目录 project。
(如果有多个文件需要提交,也可直接输入命令 git add ./ ,这样就会把相对路径下的所有代码文件添加至暂存区;)
接下来进行存储,使用 git commit -m "说明信息" 将刚添加至暂存区的代码文件提交至仓库,commit 为提交,-m 表示信息,注意说明信息必须写。
代码文件修改后,重复上面操作 先添加 再提交 即可;
如果觉得上面两步过于繁琐,在修改若干代码文件后,也可以直接使用命令 git commit --all -m "说明信息" 直接将目录下的所有文件提交,而不用先添加。
5. 查看文件状态
对于一个代码文件,我们有时候会忘记对它做过那些操作,比如这个文件现在是什么状态?在暂存区?还是已经提交?或者是修改了但未提交?这个时候我们就需要通过 git status 命令查看它的状态。如下:此时未做任何修改且已经提交。
我们试着将 test.html 修改为 test.txt 后再次添加后查看状态;如下显示 test.html 已删除,添加了新的文件 test.txt;
6. 查看日志(提交记录)
当想要知道已经向GIT仓库提交了多少次文件时,就可以使用命令 git log 来查看日志;如下图,我们已经提交了两次,提交者为 xiaoma<ma_jinjian@163.com>。
为了便于查看我们也可以设置提交日志为一行显示,这样更加精简,命令为 git log --oneline;如下显示有两个版本,前面为版本号,后面为版本描述信息。
7. 版本回退
如果说在修改代码时不小心进行了误操作,比如误删除了代码、代码改错了等,在 GIT 中这些问题都不需要担心,使用命令 git reset --hard head~0 进行版本回退即可,reset 意为重置, head 表示离当前版本最相近的上一版本,~0 则代表往前回退一次,~1 则代表两次...,如下图表示目前处于 2ab6b4c 版本。
8. 通过版本号切换版本
如果一个项目中版本有很多,这时候再用版本回退的方式就显得有点笨重且不准确。而更简单的方式就是直接通过版本号切换版本,命令为 git reset --hard 版本号;
但此时也会有一个问题,版本号过多时我们很难记忆,而且在切换版本之后,再使用 git log 命令显示日志也只会显示当前版本一个日志;那么这个时候我们就可以使用命令 git reflog 来列出所有操作过程中经历的版本号。
9. 创建、切换、合并、删除分支
在开发过程中如果某个功能做了一半并没有完成,但是也需要提交。而这样的功能直接提交后肯定会影响到整个项目。为了避免这个问题,就需要使用分支,先将未完成的功能提交到自己的分支,待完成后再合并到项目主线当中,互不影响。
在 GIT 中会有一个默认分支 master,接下来我们自己创建一个分支,使用命令 git branch 分支名,不提示则说明创建成功;
想要查看当前项目中的所有分支使用命令 git branch 即可,如下,目前处于 master 分支;
切换分支时使用命令 git checkout 分支名;
合并分支时使用命令 git merge 指定分支;意为将当前所在的分支合并到指定分支。
想要删除分支时使用命令 git branch -d 分支名,需要注意在删除分支时是不能删除自己当前所在分支的,需要切换后再删除。
10. 推送本地代码文件至 Github/Gitee
在团队协同开发项目中,每个分支的的代码最后需要提交到一个汇总项目文件的地方,大家可以公用,也就是服务器,而通常使用的 Github 或者 码云Gitee 其实就相当于一个云服务器。(注意 GIT 和 Github不是同一个东西)
这里我使用Gitee来演示推送代码操作:
首先进入 GItee 正常注册登录;
登陆之后,新建一个仓库;
创建完成会进入以下界面,仓库地址正是我们推送代码需要使用到的;
Gitee 仓库创建完成后,在本地使用命令 git push 云端仓库地址 master 将文件推送至 Gitee,在第一次推送时会让我们输入 Gitee 用户名和密码,输入自己的账号信息即可,如下:
成功后会有如下提示,表明推送成功;
这时在我们的 Gitee 中就可以看到相关操作提示以及提交的代码文件了;
Github操作同上。
11. 克隆云端的项目文件到本地
通过第十步的操作,项目文件就存储到我们的 Gitee 仓库当中了,之后有其他成员想得到项目文件只需到 Gitee 中克隆即可;
除此之外也可以在在本地通过命令进行克隆:新建一个文件,初始化 GIt 仓库后,输入命令 git pull 云端仓库地址 分支名 即可将云端项目克隆至本地。
12. 通过 SSH 方式推送代码
在前面的操作中我们推送代码时需要输入用户名和密码,涉及个人隐私自然是不安全的;
如果我们采用 SSH 方式,就不需要输入这些信息了。但是不输入账号信息并不代表不需要验证上传者的身份,需要知道 SSH 方式是采用 公钥 和 私钥 来验证上传者身份的。私钥由 GIt 使用者保留,公钥则用于云端也就是 Gitee/Github,在上传的时候会将使用者的私钥和云端的公钥进行校对,以验证上传者的身份。
在 Git 中通过命令 ssh-keygen -t rsa -C "邮箱" 生成公钥和私钥;在任意目录打开 GIt 命令行,输入命令,如下提示则说明生成成功。
由上图可知我们将公钥私钥保存在了目录 (/c/Users/Administrator/.ssh/id_rsa) 下,所以到此处查看密钥,如下:
打开文件查看公钥,将此公钥设置到 Gitee上;
复制公钥到 gitee 管理 --> 部署公钥管理 --> 添加公钥中;
此时 SSH 设置完成,推送代码时命令不变,使用 Gitee 中 SSH 格式的地址即可;
克隆代码时,也选择 SSH 选项进行克隆;
四、GIT 操作命令汇总
命令 | 含义 |
---|---|
git init | 初始化GIT仓库 |
git config --global user.name "用户昵称" | 配置GIT使用者的用户名 |
git config --global user.email "用户邮箱" | 配置GIT使用者的邮箱 |
git add ./添加的文件名 | 将指定文件添加至暂存区,以备提交 |
git add ./ | 将相对路径 ./ 下的所有文件添加至暂存区 |
git commit -m "说明信息" | 将存到暂存区的文件提交至GIT仓库(版本库) |
git commit --all -m "说明信息" | 结合添加和修改,一次性将代码文件提交至GIT仓库 |
git status | 查看文件状态 |
git log | 查看日志(提交记录) |
git log --oneline | 查看日志,结果一行显示 |
git reset --hard head~0 | 版本回退,0代表回退一次,1代表两次 |
git reset --hard 版本号 | 切换至指定版本号的版本 |
git reflog | 列出操作过程中经历的所有版本号 |
git branch 分支名 | 创建分支 |
git branch | 查看所有分支 |
git checkout 分支名 | 切换分支 |
git merge 指定分支 | 将当前所在的分支合并到指定分支 |
git push 云端仓库地址 分支名 | 将项目文件推送到远程服务器指定的分支 |
git pull 云端仓库地址 分支名 | 将云端的项目文件克隆至本地 |
ssh-keygen -t rsa -C "邮箱" | 生成公钥和私钥 |
以上是关于一文带你精通 Git(Git 安装与使用Git 命令精讲项目的推送与克隆)的主要内容,如果未能解决你的问题,请参考以下文章
精通Git(第2版)+Git团队协作+GitHub入门与实践+Git版本控制管理(第2版)
Git版本控制软件结合GitHub从入门到精通常用命令学习手册