美文网首页
Git 和 Github

Git 和 Github

作者: 岚平果 | 来源:发表于2020-03-02 13:18 被阅读0次

    一、Git 和 Github 的区别

      1. Git:是一个【分布式版本控制系统】。【简单的说就是一个软件】。用于记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的软件。
      1. Github: (https://www.github.com)是一个为用户提供Git服务的网站,【简单说就是一个可以存放代码的地方(不过可以放的当然不仅是代码】)。Github除了提供管理Git 的 web 界面外,还提供了订阅、关注、讨论组、在线编辑器等丰富的功能。Github 被称之为全球最大的基友网站。

    二、下载安装 Git

      1. 下载安装路径: https://git-scm.com/downloads
      1. 查看是否安装成功: 在电脑桌面点击鼠标右键,面板出现 【Git Gui here】说明 【Git 安装成功】。
      1. 使用前全局配置 Git :在桌面空白处点击右键,点击面板 "Git Bash Here" 来打开 Git 命令行窗口,目的是让Git 知道之后的每一步操作是哪个用户操作的。
    $ git config --global user.name "gitHub账号名"
    $ git config --global user.email "gitHub绑定的邮箱"
    
      1. 查看 Git 【姓名、邮箱】有没有配置成功:


        image.png

    三、 Git 在本地的操作三个区域

    image.png
      1. 工作区:就是代码编辑的文件夹【项目根文件夹】
      1. 缓存区和Git仓库,就是 【.Git隐藏文件夹】


        image.png

    四、Git在本地的操作流程

    image.png

    五、 Git 建立本地仓库操作

      1. 什么是仓库:
        仓库又名版本库。可以理解为是一个目录。用于 【存放代码的】。这个目录里面的所有文件都可以被 Git 管理,每个文件的修改、删除、新增等操作 Git 都能跟踪到。
      1. 为什么要创建仓库:
        当我们需要让 Git 去管理某个新项目/ 已存在项目的时候,这时就需要创建仓库了。注意,创建仓库时使用的目录不一定要求是空目录,选择一个非空目录也是可以的。但是不建议在 【现在项目上】来学习 Git ,否则造成的【一切后果本人概不负责】。
      1. 注意: 为了避免在学习或使用过程中出现各种奇葩问题,请不要使用包含中文的目录名(父目录也是如此)。
      1. 创建新目录:
    $ mkdir "项目文件夹名称(禁止包含中文)"
    $ mkdir "pro_git"
    
      1. 进入新目录:
    $ cd "上面建立的新目录名称"
    $ cd "pro_git"
    
    image.png
      1. Git 创建仓库【目的:让Git 知道,它需要来管理这个目录】
    $ git init
    
    image.png
    表现:Git 仓库初始化,执行之后会在项目录下创建 【.git】的隐藏目录,这个目录是Git 所创建的,不能删除,也不能随意更改其中的内容。
      1. 将 【工作区】的文件提交到 【缓存区】,
        在【工作区】内,当新建(修改、删除)一个文件,都意味着【工作区】内文件发生了变化。
        有以下三种提交方法:
    1. 一个文件提交到 【缓存区】
    git add 文件名
    

    2) 多个文件提交到 【缓存区】

    git add 文件名1 文件名2 文件名3  ...
    
    1. 目录下全部文件提交到【缓存区】
    git add .
    

    六、时光机 - Git 版本回退

    版本回退分为两个步骤进行,第一个是【查看版本】,确定【需要回到的时刻点】

    1. 查看版本
    1. 查看版本指令一:显示【时刻ID、时间文本、提交备注信息】
    git log
    
    image.png
    1. 查看版本指令二:显示【时间ID、提交备注信息】
    git log --pretty=oneline
    
    image.png
    2.版本回退
      1. 回到【过去的版本】
    git reset --hard  'commit的ID'
    
    image.png
      1. 回到过去之后,再想要回到之前的最新的版本,则需要指令查看历史操作记录。以得到最新的 commit ID.
    git reflog
    
    image.png
      1. 回到【之前的最新的版本】
    git reset --hard 9604958
    
    image.png
    提示:
    a. 要想回到过去,必须先得到commit id, 然后通过 【git reset --hard '"commit id"】进行版本回退
    b. 要想回至未来,需要使用 【git reflog】进行历史操作查看,得到最新的commit id
    c. 在写回退指令的时候,commit id 可以不用写全,git 会自动识别,但是也不能写太少, 至少需要写前 7 位字符。

    七、 Github 远程仓库

      1. 使用 clone 指令克隆【线上仓库到本地】
    git clone 线上仓库地址
    
    image.png image.png
      1. 在仓库上做对应的操作 【提交暂存区、提交本地仓库、提交线上仓库、拉取线上仓库】
        a) 【提交暂存区】 git add
    git add .
    
    image.png

    b) 【提交到本地仓库】

    git add commit -m "readme文件初始化"
    
    image.png

    c) 【提交线上仓库】 git push

    git push
    
    image.png
    image.png
    提示:
    首次往线上仓库提交内容的时候,需要打开 【.git】里面的config 文件进行账户、密码配置
        url = https:// 【github账户名】:【github账户密码】@github.com/xiaxiaolanGitHub/git-test.git
    
    image.png
    d) 【拉取线上仓库】git pull
    ** 先在线上仓库里新建一个index.js**
    image.png
    发现本地仓库没有index.js这个文件
    image.png
    git pull 
    

    通过 【git pull】拉取线上仓库文件

    image.png
    提醒:
    在每天工作的第一件事情就是 【git pull】拉取线上最新版本的文件,每天下班最后要做的一件事是 【git push】将本地代码提交到线上仓库。

    八、Git 的分支操作

    • 1.什么是分支?


      image.png

      在版本回退的章节里,每次提交之后都会有记录,Git 把它们串成时间线,形成类似时间轴的东西,这个时间轴就是一个分支,我们称之为【master分支】

      1. 查看分支 【git branch】 【*】表示项目当前处在这个分支上
    git branch
    
    image.png
      1. 创建分支【 git branch 分支名】
    git branch 分支名
    
    image.png
      1. 切换现有分支 【git checkout 分支名】
    git checkout 分支名
    
    image.png
    image.png
      1. 创建新分支的同时并切换这个新创建的分支为主分支 【git checkout -b 分支名】,相当于执行了上述 3 和 4 操作,创建新分支【git branch 分支名】和切换分支 【git checkou 分支名】
    git checkout -b 分支名
    
    image.png
      1. 在当前【build分支]里文件加内容,并提交到本地仓库


        image.png
        image.png

        切换到【master分支下观察readme文件里的内容 】


        image.png
      1. 合并分支 【git merge 被合并的分支名】,合并所有分支后,我们需要将【master 分支】【提交到线上远程仓库】中。
    git merge build
    
    image.png
      1. 删除分支 【git branch -d 要删除的分支名】,在删除这个分支,要退出要删除的分支上才能删除成功
    git branch -d  要删除的分支名
    
    image.png
      1. 提交到线上仓库
        现在我们看githup 线上仓库,还是一个分支,且readme文件里内容没有修改


        image.png

        这里候我们需要提交到线上仓库,【git push】

    git push
    
    image.png

    九、冲突的产生与解决

    • 1 【模拟冲突产生】
      同事在我下班上传代码后,在线上新加了一行内容


      image.png
    • 2 我上班后在readme里新加了一行我自己写的内容。


      image.png
    • 3 现在我打算把我今天的代码【git push】提交到线上仓库,发现提交失败了,git 提示我先【git pull】拉取线上代码到本地


      image.png

    【解决冲突】

    • 4 按照提示,我【git pull】一下,把线上仓库的代码拉取到本地仓库。


      image.png

    -5【git pull】之后,同事和我写的代码合并了,是git 自动帮我合并的,看下图箭头上文字,merge 合并到readme.text文件当中了。


    image.png
    • 6 和同事商量哪个代码是需要的,需要的留下,不需要的删除,以下是全部需要的,文件最好不要鼠标右键新建,这样会出现乱码现象。用专门的代码书写工具新建,以下忽略乱码。


      image.png

      -7 最后我再提交到线上仓库。

    git add .
    git commit -m "提交内容备注"
    git push
    
    image.png
    • 8 查看 线上仓库里,发现有同事的代码和我今天的代码都提交成功了。


      image.png

    十 、 忽略文件操作

    https://ke.qq.com/course/462730?taid=4768332822024074&dialog=1

    • 1 . 场景: 在项目目录下有很多万年不变的文件目录、例如css、js、images、等,或者还有一些目录即便有改动,我们也不想让它提交到远程仓库的文档。此时我们可以使用"【忽略文件】或不忽略文件的规则",规则对【当前目录及其子目录生效】。
      注意:该文件因为没有文件名,没办法直接在 window 目录下直接创建,可以通过命令行【touch .gitignore】来创建
      在 【.gitigore文件】中,常见规则写法有如下几种:
      1 ) /mtk/ 表示过滤掉整个文件夹
      2) *.zip 表示过滤所有【.zip】文件
      3) /mtk/do.c 表示过滤某个具体文件
      4) !index.php 表示不过滤具体某个文件

    • 2 新建了一个js文件夹,里面有一个index.js 文件


      image.png
    • 3 我们把代码提交到远程仓库


      image.png
    • 4 上面操作我们发现是把index.js 提交到线上仓库了。现在我们在 js 文件夹下再新建一个 tool.js , 我们不想把这个 tool.js 提交到远程仓库。


      image.png
    • 5 要想不把js 里的文件提交到远程仓库,我们现在需要建一个 【.gitignore】文件

    touch .gitignore
    
    image.png
    • 6 在新建好的 【.gitignore】文件里进行配置


      image.png
    • 7 我们再把这些代码提交到线上仓库


      image.png
    • 8 我们现在到线上仓库里看下 js 文件夹下的 tool.js 发现没有提交上去。


      image.png
    • 9 我们再把 【.gitignore文件】删除掉,再次提交发现 【js】下线的文件都提交到线上去了。


      image.png

    相关文章

      网友评论

          本文标题:Git 和 Github

          本文链接:https://www.haomeiwen.com/subject/xlymkhtx.html