git介绍以及常用的命令

417 阅读8分钟

git介绍以及常用的命令

1.版本控制地简介

官方理解:版本控制是维护工程蓝图地标准做法,能追踪工程蓝图从诞生一直到定案地过程

个人理解:版本控制就是一种记录若干文件内容变化,以便将来查阅特定版本修订情况地系统

2.版本控制地工具

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

2.分布式版本控制工具: Git、 Mercurial、 Bazaar...

3.git介绍

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

4.git特点
开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的git仓库
5.Git与SVN的区别
**1.Git** 
     Git是分布式的,每个参与开发的人的电脑上都有一个完整的仓库,不担心硬盘出问题
     在不联网的情况下,照样可以提交到本地仓库,可以查看以往所有delog,等到有网的时候,push到远程即可
     非常强大的分支管理功能
     Git内容的完整性要优于SVN,Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
**2.SVN**
     较好的权限管理功能,可以精确控制每个目录的权限
     使用相对git要简单一些
     SVN是集中式的,如果中心服务器出现问题,所有人都不能正常干活,恢复也很麻烦,因为SVN记录的是每次改动的差异,不是完整的文件
     分支功能没有git强大
     速度没有git快,如果有五个分支,是吧五个分支的文件全部拷贝下来
     必须连网才能commit
6.将本地仓库代码推送到远程仓库代码的方式

1.直接在代码托管平台创建远程仓库,然后将本地仓库的代码提交到远程仓库

  1. 如何创建远程仓库?

​ 1.注册github(代码托管平台)

​ 2.创建远程仓库

​ (点击+号,创建新仓库,仓库名称(英文) 对这个仓库的描述 勾选创建README.md 点击创建按钮)

  1. 如何将远程仓库克隆下来?

    ​ 1.复制仓库地址

    ​ 2.回到桌面,鼠标右键 点击git bash here 打开命令工具

    ​ 3.在命令行工具输入 git clone 仓库地址

    ​ 4.远程仓库就克隆到本地了

  2. 如何将本地仓库地代码推送到远程仓库?

    ​ 1.把要上传的文件放到从·远程仓库克隆到本地地仓库

    ​ 2.在命令行工具输入cd 拖入克隆地仓库地址 进入克隆仓库

    ​ 3.将工作区(仓库)代码提交到暂存区

    ​ git add . 提交所有文件

    ​ git add "文件名" 提交单个文件

    ​ 4.将暂存区地代码提交到本地仓库

    ​ git commit -m "提交地描述"

    ​ 5.将本地仓库地代码推送到远程仓库 git push

    2.先在本地创建一个git仓库,然后再代码托管平台在传建一个远程仓库,现在要把本地仓库项目推送到远程仓库,我们需要将本地仓库和远程仓库连接起来,然后在进行推送到远程仓库

    ​ 1.先在本地创建一个文件夹

    ​ 2.然后鼠标右键打开Git Bash Here

    ​ 3.输入命令 cd 拖到文件夹 进入创建地文件夹

    ​ 4.然后输入命令git init 创建.git文件

    ​ 5.然后把需要传送地文件放入文件夹里

    ​ 6.将工作区地内容提交到暂存区 git add . 全部文件

    ​ 7.将暂存区地内容提交到本地仓库 git commit -m "文件说明"

    ​ 8.通过git remote add 远程仓库地址别名 远程仓库地址 将本地仓库和远程仓库连接起来

    ​ 9.通过git push 远程仓库地址别名 master

    注意:创建远程仓库时,暂时先不要初始化/创建README.md

7.git命令

1.git init :创建一个git仓库,创建之后会在目录生成一个.git文件(隐藏)

**2.git clone:**git clone 仓库地址

3.cd 文件地址:cd 进入克隆仓库

4.git add . :提交所有文件

5.git add "文件名":提交单个文件

6.git commit -m "提交描述":将暂存代码提交到本地仓库

7.git push:将本地仓库代码推送到远程仓库

8.clear:清空当前窗口 9.git remote add 远程仓库地址别名 远程仓库地址 将本地仓库与远程仓库连接起来 10.git push 远程仓库地址别名 master 将本地仓库推送到远程仓库 11.git diff本地仓库中历史版本 文件名

8.git优势:
  1. 分布式,强调个体
  2. 公共服务器压力和数据量都不会太大
  3. 离线工作,每个人的本地仓库,大部分操作在本地库完成,不需要联网(SVN做不到)
  4. 分支操作非常快捷流畅(重点介绍)
  5. 可以吃后悔药, 尽可能添加数据而不是删除或修改数据(删除或修改不容易恢复,而每次添加一个版本,历史 版本都有)
  6. 内核一样的超大规模项目(速度和数据量)
  7. 速度快、灵活, 有能力高效管理类似 Linux
9.Linux命令:

1.cd 目录名称: 进入目录

2.cd ..: 返回上一级目录

3.ls: 查看当前目录的内容

4.ls -a: 查看当前目录隐藏的文件

5.mkdir 文件夹名称: 创建文件夹啊

6.touch 文件夹名称: 创建文件

7.clear: 清屏

8.rm -f 文件名: 表示删除一个文件夹

9.rmdir 文件夹名称/目录名称: 表示删除一个文件夹/目录

10.rm -rf 文件夹名称: 删除有文件的文件夹

11.cp 文件 复制出来的文件名: 表示复制文件

12.pwd: 显示工作路径

10.vim命令:
  ​1.**i:** 在进入vim编辑器的时候,如果要输入,首先要输入i键
  ​2.**:q!:**强制退出vim编辑器,并且不保存内容
  ​3.**:wq:**保存退出
  ​4.**cat:**查看文件内容
11.git命令行操作:
​1.**git init:** 创建git仓库
注:.git目录中存放的是本地库相关核心配置文件,也不要随意删除与修改
2..git目录仓库说明:
   1.hooks目录:脚本文件的目录
   2.info目录:保存了不希望在.gitignore,文件中管理的忽略模式的全局可执行文件
   3.logs目录:日志目录
   4.objects目录:存储所有数据内容
   5.refs目录:存储指向数据(分支)的提交对象的指针
   6.config目录:文件包含了项目特有的配置选项
   7.description:文件仅供GitWeb程序使用
   8.HEAD:文件指向当前分支

设置签名信息:

**作用:只为区分不同开发人员的身份信息**
  格式:
       用户名:mengxuey
       email:  mengxuey@163.com
**注:这里的签名信息和登录远程库的账号和密码没有任何关系(码云、GitHub)**
 项目级别/仓库级别:仅在当前目录的本地Git仓库范围内有效
         git config user.name mengxuey pro
         git config user.email mengxuey@163.com
    签名信息保存位置:./.git/config文件中

 系统用户级别:登录当前操作系统的用户范围
         git config --global user.name mengxuegu_glo
         git config --global user.email 
    mengxuey666@123.com签名信息保存位置:~/.gitconfig

级别优先:

  ​1.就近原则:项目级别优先于系统用户级别
  ​2.如果只有系统用户级别的签名,则采用系统用户级别的签名信息
  ​3.二者都不存在是不允许的
12.Git基本操作 查看状态:
** 1.git status: 查看工作区、暂存区的状态**
   1.1.On branch master # 默认在master(主干)分支上
   1.2 No commits yet  # 当前没有任何的提交
   1.3 nothing to commit (create/copy files and use "git add" to track)	# 没有什么需要提交的(创建/复制文件,使用“gitadd”命令可追踪,也就是用git去管理文件)
 **2.vim demo.txt:** 创建文件 
 **3.git add 文件名:** 将文件添加到暂存区
 **4.git commit -m "文件名":**  将文件添加到本地
 **5.git rm --cached 文件名:**  恢复 不放到暂存区
 **6.git log:**  显示提交记录
 **7.git reflog:**  显示回退记录
 **8.git log --pretty=oneline:** 以漂亮的格式显示 每条日志只显示一行
 **9.git log --oneline:**简约格式显示
 **10.git reset --hard**  局部索引值
 **11.git reset --hard HEAD^:**一个^表示后退一步,n个表示后退n步
 **12.git reset --hard HEAD~n:**n指定步数 表示后退n步

删除文件并恢复

 rm 文件名.txt:  删除
 注: 删除文件前,此文件需要已经提交过本地库 才可恢复
 命令:git reset --hard <历史记录索引值>
       删除操作已经提交到本地库:指针位置指向历史记录
       删除操作尚未提交到本地库:无法恢复

对比文件差异

  将工作区中的文件和暂存区进行比较
   命令: git diff <文件名>
   举例:向apply.txt文件添加了两行,使用 git diff apple.txt 查看
   将工作区中的文件和本地库历史记录比较
   命令: git diff <本地库中历史版本> <文件名>
 注:不带文件名比较多个文件