Git基础学习

参考 https://www.runoob.com/git/git-tutorial.html

建议到菜鸟教程学习

Git简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTg2Mzc4Ny8yMDIwMDcvMTg2Mzc4Ny0yMDIwMDcyODE3NTkzNzQ2Mi0xNTY3NTcyNTM0LnBuZw?x-oss-process=image/format ,png)

git安装与配置

Centos下安装

yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

yum -y install git-core

git --version查看git版本,出现版本信息即安装成功

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTg2Mzc4Ny8yMDIwMDcvMTg2Mzc4Ny0yMDIwMDcyODE4MTAzNjk5Mi0xNjA5NDAwNjQ0LnBuZw?x-oss-process=image/format ,png)

配置

git config查看用法

用法:git config [选项]

配置文件位置
    --global              使用全局配置文件
    --system              使用系统级配置文件
    --local               使用版本库级配置文件
    -f, --file <文件>     使用指定的配置文件
    --blob <blob-id>      read config from given blob object

操作
    --get                 获取值:name [value-regex]
    --get-all             获得所有的值:key [value-regex]
    --get-regexp          根据正则表达式获得值:name-regex [value-regex]
    --replace-all         替换所有匹配的变量:name value [value_regex]
    --add                 添加一个新的变量:name value
    --unset               删除一个变量:name [value-regex]
    --unset-all           删除所有匹配项:name [value-regex]
    --rename-section      重命名小节:old-name new-name
    --remove-section      删除一个小节:name
    -l, --list            列出所有
    -e, --edit            打开一个编辑器
    --get-color <slot>    找到配置的颜色:[默认]
    --get-colorbool <slot>
                          找到颜色设置:[stdout-is-tty]

类型
    --bool                值是 "true" 或 "false"
    --int                 值是十进制数
    --bool-or-int         值是 --bool or --int
    --path                值是一个路径(文件或目录名)

其它
    -z, --null            终止值是NUL字节
    --includes            查询时参照 include 指令递归查找

配置用户信息:

git config --global user.name "lonmar"

git config --global user.email test@123.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息

如果要在某个特定的项目中使用其他名字,只要去掉 --global 选项重新配置即可

git config --list 检查已有的配置信息

查看某个环境变量信息

git config user.name

Git工作流程

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTg2Mzc4Ny8yMDIwMDcvMTg2Mzc4Ny0yMDIwMDcyODE5NDQwMTUxMi0xMTg3NDUxNjk2LnBuZw?x-oss-process=image/format ,png)

Git 工作区、暂存区和版本库

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

![]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTg2Mzc4Ny8yMDIwMDcvMTg2Mzc4Ny0yMDIwMDcyODE5NDYyNzI4Ny0xOTAyNTY1Ni5wbmc?x-oss-process=image/format ,png)

图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。

Git 创建仓库

创建一个仓库

git init 初始化一个Git仓库

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录

该目录包含了资源的所有元数据,其他的项目目录保持不变

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200728201630196.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU1MTA4Mw==,size_16,color_FFFFFF,t_70)
指定目录作为Git仓库 git init newrepo

初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录

在这里插入图片描述
将文件纳入版本控制:

$ git add *.c
$ git add README

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200728202237788.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU1MTA4Mw==,size_16,color_FFFFFF,t_70)
以上两个命令只是提交到缓存区,下面一个命令由缓存区提交给仓库

git commit -m '初始化项目版本'

在这里插入图片描述

克隆一个仓库

git clone <repo> <directory>

  • repo:Git 仓库地址
  • directory:本地目录

基本操作

获取与创建项目命令

  • git init
  • git clone [url]

基本快照

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比

  • git add

git add 命令可将该文件添加到缓存

  • git status

查看在你上次提交之后是否有修改

  • git diff

执行 git diff 来查看执行 git status 的结果的详细信息

  • git commit

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。

(在这之前设置好名字与邮箱)

  • git reset HEAD

git reset HEAD 命令用于取消已缓存的内容

  • git rm

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作

git rm <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file>

如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

git rm --cached <file>

版本管理

参考 https://www.cnblogs.com/jiqing9006/p/8807319.html

版本回退:

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

 git reset --hard HEAD 回到当前版本
 git reset --hard HEAD^ 回到上一个版本

回退到具体的版本号:

git reset --hard [版本号]

在这里插入图片描述

分支管理

创建分支 git branch (branchname)

在这里插入图片描述

切换分支 git checkout (branchname)

合并分支 git merge

列出所有分支 git branch

(*标记的是当前分支)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200728204743311.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU1MTA4Mw==,size_16,color_FFFFFF,t_70)

删除分支 git branch -d (branchname)

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200728204847723.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU1MTA4Mw==,size_16,color_FFFFFF,t_70)

查看提交历史

  • git log

在这里插入图片描述
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200728205039664.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU1MTA4Mw==,size_16,color_FFFFFF,t_70)

posted @ 2020-07-28 22:00  10nnn4R  阅读(180)  评论(0)    收藏  举报