Git和Github的概念:

  Git是分布式版本管理系统,简单说就是一个软件,用于记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的软件。

  Github是一个为用户提供Git服务的网站,简单说就是一个可以放代码或文件的地方,Github除了提供管理Git的web界面外,还提供订阅,关注,讨论组,在线编辑器等丰富功能。

Git的下载和Github账号的注册:

  1.Github的账号注册地址:https://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home

  2.Git的官方下载地址:https://git-scm.com/downloads     如果下载慢的可在:https://npm.taobao.org/mirrors/git-for-windows/下载(直接默认安装即可),桌面右键查看是否有 Git Bash Here和 Git GUI Here,则证明安装成功

Git的工作流程:

 

Git本地仓库操作:

  1.首次使用需进行全局配置:

    配置用户名:git config --global user.name "用户名";

    配置用户邮箱:git config --global user.email "邮箱";(这里使用Github的用户名和邮箱)

  2.创建目录命令:两种创建方式:①mkdir 文件名 ②windows下右键创建文件夹

    

  3. ① cd flask_blog(进入项目目录)

   ② git init 初始化

    进入目录flask_blog,勾选隐藏的项目,即可显示

    

    ③git status,查询当前工作区所有文件的状态;

         

      nothing to commit (create/copy files and use "git add" to track)当前没有进行任何提交,可以创建或者复制文件,并使用"git add"命令进行跟踪

   ④那么我们当前应该新建文件在所创建的flask_blog目录下,然后 git add指令可将文件添加到缓存区

        提交的方式有三类:

          语法1:git add 文件名

          语法2:git add 文件1 文件名2 文件名3....

          语法3:git add.   【添加当前目录到缓存区】

      

      这里就使用git add readme.txt的方式添加到缓存区

    ⑤提交过后,使用git status 查看当前文件状态

      

     这里提示我们可以利用git rm --cached <file>指令清除文件,但我们不需要这样做

    ⑥接下来可以利用:  git commit -m "注释内容"   指令将缓存区的文件提交至版本库

    

     ⑦下面我们可以进行版本回退的操作

    我再新建一个文件提交到版本库,文件名为index1.py

    重复上述操作 ⑴git add index1.py ⑵git commit -m "新建文件index1.py"

    

    查看版本命令:⑴ git log ⑵git log --pretty=oneline

    

    两种方式不同的显示日志的方式,一般使用第二种,清晰明了。

    

     黄色部分为版本号,后面为注释内容

   现在我们要回到第一个版本的状态,使用命令: git reset --hard 版本号

    

     执行完毕后,本地仓库变为

              

    ⑧如果我们需要回到有index1.py这个文件时的状态,可以进行下列操作:

    使用指令去查看历史操作:git reflog

     

     然后进行回到此状态的操作:

     

    总结:a.要想回到过去,必须先得到 commit id (版本号),然后通过git reset --hard 进行回退;

        b.要想回到未来,需使用 git reflog 进行历史操作查看,得到最新的 commit id;

        c.在写回退指令的时候 commit id 可以不用写全,git 自动识别,但是也不能写太少,至少需要写前四位字符

Github远程仓库的创建:

  1.登录Github账号

  2.点击Start a project

  

  3.①Responsitory name为仓库名,必填

     ②Public互联网上任何一个人都可以看到此库,Private此库只可以授权的才能提交,一般选择Public,然后确认创建即可

   

Github远程仓库的使用:

 一.HTTPS协议

  1.远程仓库的克隆操作

  

   ①cd .. 返回到上一层目录

    ②mkdir ./splider 创建目录

    ③使用 git clone 克隆线上仓库到本地

    语法:git clone 线上仓库地址

      

     cd splider 进入splider目录,进行克隆指令 ,这里会出现一个警告warning: You appear to have cloned an empty repository,

     意思为你克隆了一个空仓库,不用去管。

      

      克隆完成

        

      然后进入克隆好的 splider_clone,里面存在一个".git"文件夹,如下:

        

    2.将工作区的内容提交到github远程仓库

     在仓库上对应的操作 (提交到暂存区、提交到本地仓库、提交到线上仓库、拉取线上仓库)

     ① 在splider_clone下创建 readme.txt文件

     

      

      ② 进入到splider_clone目录下

          

      ③ 使用命令 git add readme.txt 提交到缓存区,使用 git commit -m "新建文件readme.txt" 将暂存区的文件提交到本地仓库中:

        

      ④ 使用命令 git push 将本地仓库的文件提交到线上仓库,会弹出一个 Personal Access Token 窗口

        

          

        去Github获取自己的Personal Access Token

          点击进入settings

          

          点击进入Developer settings

          

          点击进入 Personal access tokens

            

         点击进入  Generate new token

          

        输入Github账号密码

        

        这里填 Note,repo勾选即可:

              

         确认获取

            

        这里就是获取到token

          

        填入即可, 点击 Sign in :

        

        成功提交到线上仓库成功:

             

        检查线上仓库是否有readme.txt 文件:

          

     3.拉取线上仓库文件操作  语法:git push

      我们先在线上仓库创建文件

       

        填上文件名和注释

          

      创建

        

    

        

      git pull 拉取线上仓库文件到本地

          

          

           提醒:在每天工作的第一件事就是先 git pull 拉取线上最新的版本;每天下班前要做的是 git push,将本地代码提交到线上仓库

    

  二、ssh协议

    *该方式与前面https方式相比,只是影响github对于用户的身份鉴权方式,对于git的具体操作(如提交本地,添加注释,提交远程等操作)没有任何影响  

    ①先安装OpenSSH,下载地址:https://openssh.en.softonic.com

     ② 生成公私钥对指令: ssh-keygen -t rsa -C "注册邮箱"

        Enter file in which to save the key (/c/Users/cwg-member/.ssh/id_rsa)  这句话询问我们把公私钥对放在那里,直接默认位置就行,敲回车

          

          叫我们公私钥对保护密码,如果不需要密码直接回车就行

             

          连续回车,得到这个,

             

          去公私钥对的保存位置,用记事本打开 id_rsa.pub 文件,复制里面的内容

            

            

      ③在Github上设置公钥内容

        点击 SSH and GPG keys,进入New SSH key 进行设置

        

          

        把刚刚复制的公钥内容复制到key里面,标题自取,Add SSH key即可

          

        再次确认密码即可

          

Git 的分支操作:

  在版本回退的中,每次提交都会有记录,Git把它们串成时间线,行程类似于时间轴的东西,这个时间轴就是一个分支,我们称之 master 分支。

  在开发的时候往往是团队协作,多人进行开发,因此光有一个分支是无法满足多人同时开发的需求的,并且在分支上工作并不影响其他分支的正常使用,会更加安全。Git 鼓励开发者使用分                支去完成一些开发任务。

   ①分支相关指令:

    查看分支:git branch

    创建分支: git git branch 分支名

    切换分支: git checkout 分支名 

    删除分支:git branch -d 分支名

    合并分支: git merge 被合并的分支名

    创建分支并切换到创建的分支: git checkout -b 分支名  (-b 表示创建并切换 相当于两个操作指令)

   ②分支指令操作如下:

     查看分支:

       

     创建分支并查看分支:

       绿色字体表示当前所在分支

       

     切换分支:

      标红部分表示切换成功,分支名改变

      

     合并分支:

       我们现在需要在devr分支下修改 readme.txt的文件内容并提交到本地,如下

      

         然后我们进入到 master 分支,标红表示分支切换回来了

      

       再去查看readme.txt文件发现并没有我们修改过的文件,说明这是在两个不同的分支进行的操作:

          

      

        合并操作,将 devr 分支合并到master分支中

        

        再去查看 master 分支下的 readme.txt的内容,说明合并成功

          

       删除分支:

        因为devr分支里面的文件已经合并到master分支中去了,我们可以删除devr分支,在用 git branch查看分支,发现 devr分支已经被删除

          

          注意:在删除分支的时候,一定要先退出要删除的分支

   ③合并所有分支之后,需要将 master 分支提交线上远程仓库,提交命令 git push 。

      

Git 冲突的产生与解决:

   情景概述: 同事在线上仓库修改了某个文件,这个文件是交给小明完成的,结果第二天小明来上班并不知道文件已被修改,继续在本地完善代码,到下班时,小明和平时一样进行 git add 文件名    ,git commit -m "注释",git push操作时,发现向线上仓库提交时报错了。图中提示先 git pull操作,git pull操作后,此时git已经将线上与本地仓库的冲突合并到了对应的文件中。打开冲突文                      件,解决冲突。解决方法:需要和同事进行商量,看代码如何保留,将改好的文件再次提交即可。

   

    

    

    

图形化管理工具:

①Github for Desktop

 ②Source tree

 ③TortoiseGit

 ⑤Git GUI  

    

 忽略文件操作:

  一、应用场景:如果不想提交某些文件到线上仓库中去,可以使用此操作。

  二、常见规则写法:

    ① /mtk/  过滤整个文件夹

    ② *.zip    过滤所有.zip文件

    ③ /mtk/do.js  过滤某个具体文件

    ④ !index.php 不过滤具体某个文件

  三、案例:

    ①先在本地仓库中新建一个js目录以及目录中 js 文件

      

    

  

     ②依次提交本地与线上

        

     ③ 新增 .gitignore 文件,用指令 touch .gitgnore 创建

        

     ④ 编写文件中的规则(根据自己的需要编写即可)

       /js/ 就是忽略掉js目录

        

     ⑤ 然后再在js新建一个js文件

        

     ⑥然后再进行提交

      

    ⑦去线上仓库看,发现并没有 m.js 文件,说明此js目录被忽略

      

                                                                  

博客地址:https://www.cnblogs.com/gian-t87/p/14513056.html

作者:TUT

版权声明:原创作品,谢绝转载!否则将追究法律责任。

                                                                                     

      

      

      

      

        

    

    

    

  

  

  

  

   

Git详解和Github的使用的更多相关文章

  1. Git详解及 github与gitlab使用

    1.1 关于版本控制 1.1.1 本地版本控制 本地版本控制系统 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别.这么做唯一的 好处就是简单,但是特别容易犯错.有 ...

  2. Git详解及github的使用

    1.Devops介绍 1.Devops是什么 开发 development 运维 operations 2.Devops能干嘛 提高产品质量 1 自动化测试 2 持续集成 3 代码质量管理工具 4 程 ...

  3. Git详解及github与gitlab使用

    第一章 关于版本控制 第二章 GIT简介 第三章 GIT安装 第四章 初次运行GIT前配置 第五章 初始化仓库 第六章 GIT命令操作 第七章 GIT分支结构

  4. 【转】Git详解之一:Git起步

    原文网址:http://blog.jobbole.com/25775/ 原文:<Pro Git> 起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后 ...

  5. Git详解之一:Git起步

    起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...

  6. 一文详解Hexo+Github小白建站

    作者:玩世不恭的Coder时间:2020-03-08说明:本文为原创文章,未经允许不可转载,转载前请联系作者 一文详解Hexo+Github小白建站 前言 GitHub是一个面向开源及私有软件项目的托 ...

  7. windows 安装Git详解

    windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...

  8. Git详解之一 Git实战

    Git详解之一 Git实战 入门 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章 ...

  9. git原理,git命令使用详解,github使用 --有此图文并茂原来如此简单

    一.Git分布式控制系统原理:git有三个区,被管理的代码或文件是从:工作区-->暂存区-->本地版本库. 二.GitHub创建线上仓库GitHub是一个面向开源及私有软件项目的托管平台, ...

随机推荐

  1. Kubernets二进制安装(14)之flannel之SNAT规则优化

    flannel之SNAT规则优化的目的是由于在K8S中的容器内,访问不同宿主机中的容器的资源的时候,日志文件会记录为宿主机的IP地址,而不是记录为容器本身自己的IP地址,建议在不同的宿主机上的容器互访 ...

  2. xss之htmlspecialchars

    源代码: 可以看到是用htmlspecialchars 对get参数message进行处理,但是他默认不对单引号进行处理的. 只对预定义的字符进行处理: & (和号)成为 & &quo ...

  3. js中当for循环中有事件要使用循环变量时,变量用var声明和let声明的区别

    var 声明一个全局变量,声明的变量会变量提升: let 声明一个局部变量: 当页面加载完后,for循环也结束了,如果用var声明的变量此时也随着for循环的结束而自增到满足结束循环的条件, 此时调用 ...

  4. how to remove duplicates of an array by using js reduce function

    how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ...

  5. Node.js require 模块加载原理 All In One

    Node.js require 模块加载原理 All In One require 加载模块,搜索路径 "use strict"; /** * * @author xgqfrms ...

  6. 析构函数 & 构造函数

    析构函数 & 构造函数 C++ 析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数. 析构函数往往用来做"清理 ...

  7. 封装 React Native 原生组件(iOS / Android)

    封装 React Native 原生组件(iOS / Android) 在 React Native中,有很多种丰富的组件了,例如 ScrollView.FlatList.SectionList.Bu ...

  8. js {}与class属性描述符的区别

    let data = { name: "ajanuw", change() { this.name = "Ajanuw"; }, get message() { ...

  9. vue mixin执行覆盖

    https://cn.vuejs.org/v2/guide/mixins.html 完整代码 vue-option-overwrite-strategies vue 自带的mixin如果钩子函数重复会 ...

  10. opencv打不开摄像头

    问题描述: capFace = cv2.VideoCapture(0) 报错: VIDEOIO ERROR: V4L2: Unable to capture video memory. VIDEOIO ...