git,从小白到实战一小时速通之本地仓库基本操作

115 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

前言

git是一个开源的分布式版本控制系统。

关键词:分布式 版本控制

如何理解分布式?参照下图,传统的集中式系统可能会出现中心服务器出现故障,其他电脑就无法提交的问题。

image.png 而分布式就很好的解决了这个问题,像 Git 这种分布式版本控制工具,解决了集中式版本控制系统的缺陷: 1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的) 2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

image.png

版本控制则更好理解,git记录每一个历史版本,可以方便找到之前的版本。

下面深入学习git,注意,本文不说明git安装方法。

基本配置

在初次安装好git后,在桌面任意位置,鼠标右键,打开“Git Bash”,

1.设置用户信息

git config -global user.name "itcast"

git config -global user.email "hello@itcast.cn"

2.查看配置信息

git config -global user.name

git config -global user.email

用户跟邮箱一定要配置,不然后面会报错。

获取本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

步骤:

  1. 在电脑的任意位置创建一个空目录 (例如test) 作为我们的本地Git仓库
  2. 进入这个目录中,点击右键打开Git bash窗口
  3. 执行命令git init
  4. 如果创建成功后可在文件夹下看到隐藏的.git目录。

image.png

基础操作指令

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。

image.png 上图所示的工作区,就是除了.git目录以外的区域就是工作区,文件只有添加到暂存区后,再添加到仓库,才算是一次完整的提交。

查看修改的状态(status)

●作用:查看的修改的状态(暂存区、工作区)

●命令形式: git status

添加工作区到暂存区(add)

●作用:添加工作区一个或多个文件的修改到暂存区

●命令形式: git add 单个文件名|通配符

将所有修改加入暂存区: git add .

如果有不想添加到暂存区的文件,可以在工作区新建.gitignore文件,在该文件中写入不想加入暂存区的文件就行。

例如,我觉得git add .添加到暂存区很方便,但又不想file02.txt文件添加到暂存区,我就新建.gitignore文件,在文中添加file02.txt写入就行。

image.png

提交暂存区到本地仓库(commit)

●作用:提交暂存区内容到本地仓库的当前分支

●命令形式: git commit -m '注释内容'

查看提交日志(log)

●作用:查看提交记录 ●令形式: git log [option]

options作用
--all显示所有分支
--pretty=oneline将提交信息显示为一行
--abbrev-commit使得输出的commitld更简短
-graph以图的形式显示

image.png

命令太长的话我们可以使用别名, 打开gitBash,执行 touch ~/ .bashrc,然后我们就可以在该文件中添加这行命令:alias git-log="git log --pretty=oneline --all --graph --abbrev-commit",这个文件在当前用户目录下。

image.png 效果如图:

image.png

版本回退

●作用:版本切换

●命令形式: git reset --hard commitID

。commitID 可以使用git-log或git log指令查看

●如何查看已经删除的记录?

git reflog

这个指令可以看到已经删除的提交记录

文件提交案例

我们在本地仓库新建一个file01.txt文件,我们直接查看它的状态,显示是未跟踪的(图片中的Untracked 应该是未跟踪,图中文字写错了)。

image.png

用命令git add file01.txt添加到暂存区,省事点也可以直接git add .

image.png

git commit完成一次提交

image.png

如果我们需要做版本回退,用git log找到要回退的对应版本的commitID,使用git reset --hard commitID即可。

image.png

如果版本回退后,git log看不到记录了,可以git reflog 查看所有记录