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