Git - 基础入门与常用操作

【1】版本控制工具应该具备的功能

① 协同修改

多人并行不悖的修改服务器端的同一个文件。

② 数据备份

不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。

③ 版本管理

在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空
间,提高运行效率。这方面SVN 采用的是增量式管理的方式,而Git 采取了文
件系统快照的方式。

④ 权限控制

对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。

⑤ 历史记录

查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。

⑥ 分支管理

允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

⑦ 版本控制工具

集中式版本控制工具:CVS、SVN、VSS……

这里写图片描述


分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……

这里写图片描述


【2】Git 介绍与安装

① 官网地址:https://git-scm.com/

这里写图片描述


② Git的优势

  • 大部分操作在本地完成,不需要联网;
  • 完整性保证;
  • 尽可能添加数据而不是删除或修改数据;
  • 分支操作非常快捷流畅;
  • 与Linux 命令全面兼容。

③ Git的安装

  • 从官网下载对应自己系统的安装程序,以管理员身份运行,安装在英文无空格目录下;

这里写图片描述


  • next 下一步 安装选项

这里写图片描述


  • next Git安装目录的名字–默认即可

这里写图片描述


  • next 使用VIM编辑器作为默认编辑器–不需要更改

这里写图片描述


  • next 选择如何使用Git 命令行

这里写图片描述

完全不修改Path环境变量,仅在Git bash中使用Git。


  • next 选择Git使用的命令客户端程序–默认即可

这里写图片描述


  • next 选择Git本地到远程连接所使用的SSL/TLS库–默认即可

这里写图片描述


  • next 配置文档行末换行符转换风格–默认即可

这里写图片描述


  • next 选择Git Bash使用的终端仿真程序–默认即可

这里写图片描述


  • next 配置额外功能 –默认即可

这里写图片描述


  • install –安装过程

这里写图片描述
这里写图片描述


右键–Git Bash Here,即可打开Git的命令终端:

这里写图片描述


【3】本地库和远程库

① Git的结构

这里写图片描述


② Git和代码托管中心

代码托管中心的任务:维护远程库。

局域网环境下:GitLab 服务器。

外网环境下:GitHub、码云。


③ 团队内部协作下本地库和远程库示意图

这里写图片描述


④ 跨团队协作下本地库和远程库示意图

这里写图片描述


【4】Git仓库初始化并设置签名

① 本地库初始化

在磁盘Git工作空间内创建firstDemo,然后执行命令git init.

12746@Janus MINGW64 ~/Desktop
$ cd D:/GitInstall/workspace

12746@Janus MINGW64 /d/GitInstall/workspace
$ mkdir firstDemo

12746@Janus MINGW64 /d/GitInstall/workspace
$ ls
firstDemo/

12746@Janus MINGW64 /d/GitInstall/workspace
$ cd firstDemo/

12746@Janus MINGW64 /d/GitInstall/workspace/firstDemo
$ ls

12746@Janus MINGW64 /d/GitInstall/workspace/firstDemo
$ git init

这里写图片描述

如图初始化了空的Git仓库在D:/GitInstall/workspace/firstDemo/.git/路径下。


创建的.git目录是隐藏资源,使用如下命令查看:

12746@Janus MINGW64 /d/GitInstall/workspace/firstDemo (master)
$ ll -lA
total 4
drwxr-xr-x 1 12746 197121 0 729 15:50 .git/

查看git目录,内容如下:

这里写图片描述

注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。


② 设置签名

形式:用户名:tom;Email 地址:[email protected]

作用:区分不同开发人员的身份。

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关
系。

命令

  • 项目级别/仓库级别:仅在当前本地库范围有效
git config user.name tom_pro
git config user.email goodMorning_pro@qq.com
# 信息保存位置:./.git/config 文件

这里写图片描述

  • 系统用户级别:登录当前操作系统的用户范围
git config --global user.name tom_glb
git config --global user.email goodMorning_pro@qq.com
# 信息保存位置:~/.gitconfig 文件

这里写图片描述

  • 级别优先级

就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名。如果只有系统用户级别的签名,就以系统用户级别的签名为准。二者都没有不允许


【5】常用命令操作

① 状态查看

git status

查看工作区、暂存区状态。
这里写图片描述


② 添加

git add [file name]

将工作区的“新建/修改”添加到暂存区,如下图创建一个good.txt并提交:

这里写图片描述


③ 提交

git commit -m "commit message" [file name]
# git rm --cached <file> 从暂存区移除指定文件

将暂存区的内容提交到本地库。

这里写图片描述


提交多个文件:

git commit -m "commit message" *

这里写图片描述


④ 文件覆盖与更新

如将good.txt进行了修改,查看状态:

这里写图片描述

此时直接添加将会将修改后的文件放到暂存区,如下图:

这里写图片描述


⑤ 查看历史记录

git log

这里写图片描述

多屏显示控制方式:

空格向下翻页
b 向上翻页
q 退出

这里写图片描述


日志单行显示:

git log --pretty=oneline

这里写图片描述

git log --oneline

这里写图片描述

显示指针:

git reflog

这里写图片描述

HEAD@{移动到当前版本需要多少步}。


⑥ 前进/后退当前所在版本

  • 基于索引值操作[推荐]
git reset --hard [局部索引值]
# git reset --hard a6ace91

这里写图片描述

  • 使用^符号:只能后退
git reset --hard HEAD^
# 注:一个^表示后退一步,n 个表示后退n 步

这里写图片描述

  • 使用~符号:只能后退
git reset --hard HEAD~n
# 注:表示后退n 步

⑦ reset 命令的三个参数对比

  • –soft 参数

仅仅在本地库移动HEAD 指针。

  • –mixed 参数
    在本地库移动HEAD 指针并重置暂存区。

  • –hard 参数

在本地库移动HEAD 指针;重置暂存区;重置工作区。


⑧ 删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库,如下图所示:

这里写图片描述
这里写图片描述


操作:git reset –hard [指针位置]

删除操作已经提交到本地库:指针位置指向历史记录,如下图:

这里写图片描述

删除操作尚未提交到本地库:指针位置使用HEAD。

如下图所示,此时删除操作还没有提交到本地库,只是到暂存区。

这里写图片描述

使用命令:

git reset --hard HEAD

这里写图片描述


⑨ diff比较文件差异

将工作区中的文件和暂存区进行比较:

git diff [文件名]

这里写图片描述

将工作区中的文件和本地库历史记录比较:

git diff [本地库中历史版本] [文件名]
# git diff HEAD  apple.txt
# git diff HEAD^  apple.txt

这里写图片描述

不带文件名比较多个文件:

git diff

这里写图片描述


猜你喜欢

转载自blog.csdn.net/J080624/article/details/81269297