• git基础知识汇总


    什么是git

    git是一种分布式版本的版本控制系统 可以清楚的记录每个文件是谁在什么时候加进来 什么时候被修改或者删除的 git帮助保存这些历史记录和证据
    git也是当前业界最流行的版本控制系统

    git优点?

    免费开源 为了管理Linux内核程序代码,LINUX内核作者禁用10天时间就开发出来了git
    速度快 文件体积小
    分布式系统

    git缺点

    易学难精 git指令非常多 有些指令复杂但平时回到用的并不多 大概20%的指令就足以应付80%的工作。

    环境安装

    在window操作系统工安装git职权 先从官网下载合适的git版本 安装是直系根据提示异步点击“next”按钮即可
    安装完成后置 选择Git Bash 应用程序(这个与window自带的命令提示府窗口不太一样)它本身模拟一个linux的时间很致命的软件--Bash
    在窗口中输入 which git 验证git时候安装完成以及确认其版本信息

    (graphic user interface,GUI)图形界面工具 

    SourceTree  GitHub DeskTop 这两款工具  免费功能完整

    终端机及常用命令介绍

    就是提供使用者输入命令,与计算机进行交互的。
    在windows操作系统中 按“windows+X”选择命令提示符 现象 即可进入一个类似终端机的窗口。
    Git CMD 或Git Bash 程序可以使用 他可以让你比较顺利的使用git命令

    在终端机环境下常用的系统命令

     
    Windows macOS/Linus 说明
    cd cd 切换目录
    cd pwd 获取当前所在的位置
    dir Is 列出当前的文件列表
    mkdir mkdir 创建新的目录
    touch 创建文件
    copy cp 复制文件

    move

    mv

    移动文件
    del rm 删除文件
    cls clear 清除画面上的内容

    Git全局配置和单个仓库的用户名邮箱配置

    学习git的时候, 配置了一个全局的用户名和邮箱

    $ git config --global user.name “github’s Name”
    $ git config --global user.email “github@xx.com”
    $ git config --list

    如果你公司的项目是放在自建的gitlab上面, 如果你不进行配置用户名和邮箱的话, 则会使用全局的, 这个时候是错误的, 正确的做法是针对公司的项目, 在项目根目录下进行单独配置

    $ git config user.name “gitlab’s Name”
    $ git config user.email “gitlab@xx.com”
    $ git config --list

    git config --list查看当前配置, 在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置

    简化 Git 操作

    git config --global alias.<alias> <command>
    // 示例 把 git branch 简化为 git br
    git config --global alias.br branch

    新增 初始Repository

    cd e:              切换至/e目录
    mkdir mygit    创建mygit目录
    cd mygit        切换到刚刚创建的mygit目录
    git init           初始化这个目录,让git对这个目录开始进行版控创建一个.git目录 git精华都集中在这个目录中

    如果这个目录不想在被Git控制


    只要把.git目录移除 git就对这个目录失去控制权了 整个项目中无论那个文件或者目录删除都能找回来,但.git目录被删除了就没法再找回来了
    把文件交给git管理

    git简单使用

     从上面的信息可以看出 

    git status 查看状态
    git add <file> 把文件交给git管控
    文件状态从Untracked变成new file 表示该文件已经被安置到暂存区(Staging Area)
    如果觉得git add 有点麻烦 可以使用万用字元
    git add *.html 把后缀名是.html的文件全部加到暂存区
    git add --all 把全部文件都加到暂存区

    --all 与 .参数有什么不一样

     git add . 不会处理删除文件行为(Git2.X版本中可以  这两个参数在功能上没有区别)
    执行命令时的目录位置有差异
    git add . 会把当前文件夹 以及它的子目录、子子目录...中的移动全部加到暂存区,但是该目录以外的就不归它管了
    git add --all 不管在项目中哪一层目录执行 效果都一样的 这个项目中的所有异动都会加入暂存区

    要完成commit命令才算是完整流程

    git每次commit都只会处理暂存区内容 那些还没有被加入到暂存区的文件不会被commit到存储库中。

    git add 命令把文件从工作目录移至暂存区
    git commit 命令把暂存区内容移至存储库

    一定要一分为二吗?

    先从add在commit有点繁琐 可以在commit时多加一个-a参数 缩短这个流程
    git commit -a -m "update content"

    查看历史方法

    git log --oneline --graph 带参数精简输出

    git mv oldfile newfile 重命名·
    git commit --amend -m “提交名” 提交修改最后一个commit提示信息
    git commit --amend --no-edit 追加文件到最近的一次commit

    新增目录 无法加载git中问题


    git在计算,产生对象是 是根据“文件内容”进行计算的 所有只是新增一个目录的话 git是无法处理它的

    git rm 命令--cached参数的作用

    git rm 用于将指定文件从git版本控制中移除(其实是在stage Area 中移除文件)

    假设 a.txt 已被添加进版本控制。
    在不知道rm命令之前我会这样做:

    rm a.txt
    git add a.txt
    git commit -m 'delete a.txt'

    知道了有rm 命令后,我会这样做:git rm a.txt

    git commit -m 'delete a.txt'


    git rm 命令相当于直接删除文件并将该操作add到暂存区,所以就相当于直接从暂存区移除指定文件。

     

    当需要在移除版本控制中的指定文件并需要在工作区中保留该文件时,需要
    带--cached 参数

    有些文件不想放在git中?

    在项目目录中放一个.gitignore文件,并且设置想要忽略的规则即可。
    只要.gitignore文件存在。即使这个文件没有被commit或push上Git服务器,也有效果,但通常建议将这个文件commit进项目并且push上Git服务器,以便让一起开发项目的所有人可以共享相同的文件。
    git add -f 文件名 无视ignore忽略规则上传

    如果想套用.gitignore的规则,就必须先使用 git rm --cached命令把这些”既得利益者“ 移除Git  然后他们就被忽略了。

    版本控制:

    git log 查看提交历史记录  从最近到最远   可以看到3次

    git  reflog   查看每一次修改历史

    git  rest -- HEAD^  回退版本

    git  checkout  --test.txt  丢弃工作区的修改,即撤销修改

  • 相关阅读:
    day 28 客户端服务端架构介绍,互联网协议,互联网协议补充,三次握手与四次挥手
    day25 单例模式实现方法一 单例模式实现方法二
    day24 反射/定制__str__方法控制对象的打印格式/定制__del__方法回收系统资源/元类介绍以及默认元类type创造类的过程/自定义元类控制类的创建过程/自定义元类控制类的调用过程
    day 23 封装之如何隐藏、封装之隐藏属性的底层原理、封装的真正意义、property特性、绑定方法与非绑定方法
    day22 组合、菱形继承问题、C3算法与mro介绍、在子类派生的新方法中重用父类功能的两种方式、super()严格以来继承关系、多态与鸭子类型
    day21 对象定制自己独有的属性/属性查找/绑定方法/小结/继承介绍/继承与派生
    day19 正泽表达式,sys模块,打印进度条,subprocess模块
    day18 logging模块的补充/jason序列化与反序列化/json补充/pickle序列化与反序列化/time模块/datetime模块/random模块/os模块
    day17 包的使用 logging模块的基本用法
    day16 面向过程编程/模块介绍/import导入模块/ from...import导入模块/循环导入问题/模块的搜索路径/区分python文件的两种用途/软件开发的目录规范
  • 原文地址:https://www.cnblogs.com/ddqyc/p/16399416.html
Copyright © 2020-2023  润新知