Git详解和Github的使用

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

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

                                                                                     

 

       

      

      

       

 

 

         

 

 

 

    

    

 

 

    

 

 

 

   

 

 

  

  

  

   

posted @ 2021-03-13 14:01  小荀彧  阅读(614)  评论(0编辑  收藏  举报