• git的学习笔记


    #git是什么

    Git可以说是最好用的,而且是最方便的分布式版本控制系统(如果你要是永远保持在网络畅通的情况下,当我没说这个说)
    工作原理/流程:
    可以分为四个区:
    Workspace : 工作区
    Index / Stage : 暂存区
    Repository : 仓库区(或者本地仓库)
    Remote : 远程仓库

    为什么选择git

    git首先是 分布式版本控制系统,每个人都的电脑就是一个完整的版本库,这样,也可以在没网的情况下,去完成工作,如果多人,互相pull 就可以看到对比和修改的对比的地方。
    无论windows还是linux都是傻瓜式的安装,在这里而且网上也有想关的教程。所以在这就不说明了

    关键的如何操作

    建议在bash的情况下,还有尽可能先看看git 的help 去查看命令

    1. 首先要为这台机器的所有git仓库设置用户名和邮箱(下面我是因为已经设置过了)设置全局变量

    2. 创建版本库
      版本库–其实就是你的项目名的文件夹,在这个文件夹里面,git可以跟踪任何文件并且是任何时间,最重要的还可以"还原"
      相当于初始化
      我是因为在文件夹里面直接右键打开的bash,,所以很方便不是吗
      这时候,在这个文件夹,就会出现一个隐藏的.git文件夹,这个就是init后成功的证明,这个尽量不要动。
      (1) 首先添加这个文件夹的文件。或者使用 . 直接添加所有文件。
      添加
      (2) 在第一步完成时候,你只是添加了,但是没有提交到本地仓库,你必须要 “commit” 下,提交到仓库
      提交到本地仓库
      (3) 当你完成第二步后,,然后用git status 可以判断自己是否已经commit成功。绿色代表成功,红色代表没有添加
      文件commit
      (4) 在这里,版本控制只能看到文件的变化,不能检测到图片或视屏的变化,只能判断出来大小。
      (5) 如果你改到某个文件可以查看下这个文件到底改动了什么
      文件变化
      在提交的时候,记得查看状态,养成好的习惯,可以给自己方便很多,
      []

    3. 版本回退
      如果你想回退你刚才的内容,你放心,这个是可以解决的。
      [^2]我这里已经做好多种修改

    图片

    	  可以看到最后一次添加的内容和上一次添加的内容。。
    

    如果你不想让现实这么多的内容可以命令 git log -pretty=oneline
    (1) 版本回退使用;
    第一种是 : git reset --hard HEAD^ 回退上个版本 。
    第二种是: git reset --hard HEAD-100,用数字表示版本,进行回退版本。
    在这里插入图片描述
    在这里插入图片描述
    如果你忘记了你想回复的版本号,需要查看版本号: git reflog

    1. 理解工作区和暂存区的区别
      (1) 工作区:就是你在电脑看到的目录,或者你后面改变的任何东西。
      (2) .git 这个是另外的,这就是版本库,其中重要的是stage(暂存区),还有创建的第一个分支master 以及指针HEAD
      在工作区和暂存区上面其实已经提到过了,就简单就是git status 那个是红色的和绿色的,绿色的就是在暂存区了

    2. GIt 撤销修改和删除文件操作
      (1) 撤销修改

       	  如果你提交的内容发现有问题,你可以做下面的操作进行撤销
       	  1.直接在文件更改然后commit
       	  2.就是恢复上一个版本
       	  3.就是撤销工作区的修改了:git checkout --file (这些可以自己尝试了,会更加记得牢固)
      

    git checkout --file 如果不加-- 命令就是创建分支的命令了
    (2)删除文件
    直接使用rm 加文件名就可以删除
    或者在工作区删除然后commit

    远程仓库

    上传项目到github 一共有两种方法,
    1.一种是利用ssh key 进行连接,这种方法是很安全的,
    2.第二种方法是http就是,虽然这种方法不安全是,但是非常的方便。
    这个自己选择

    ssh key连接

    1.首先创建ssh key:
    (如果你用户主目录有.ssh 这个目录就可以跳过这步了)

    ssh-keygen -t rsa –C “youremail@example.com
    

    2.然后再github加入自己的电脑的私钥。
    在这里插入图片描述
    记得在这里选在ssh密钥就行了
    3.现在github已经弄好了,,然后再git上面创建一个新的仓库,然后复制那个仓库的ssh密钥就行了。
    4.如果上面都已经成功了 ,那么在本地的仓库就行

    git remote add origin ssh密钥
    

    5.然后你就可以进行最终的一步了就是push项目到github了。

    git push -u origin master
    把本地仓库分支master内容推送到元仓库去
    

    第一次要加上u是让本地的master分支与远程的master关联起来
    然后你就可以进行日常push了,

    HTTP方式下push项目

    	这个对于上面那个方法是很简单的,只需要复制http的网址
    

    在这里插入图片描述
    然后 就可以执行这个命令了,直接就可以上穿项目了
    在这里插入图片描述

    从远程库克隆

    ssh clone

    1. 如果你已经在github上已经好的仓库,方法还是像上面的方法一样,只是命令不一样而已。
    2. 如果你电脑没有ssh的话,,必须要先在github加上你的电脑的私钥,

    http clone

    1. 如果是http,就不必了第二步的操作可以直接就可以clone
      在这里插入图片描述

    分支的管理

    最重要的分布式管理,就是git里面的每次提交都是串成一条时间先,这个时间先就是一个分支。如果是新建的仓库,都只是有一条分支也是主分支。
    HEAD可以说是不是指向提交,而是指向master
    
    1. 创建分支
      在这里插入图片描述
      git checkout 命令加上-b 表示创建并切换,所以,你就发现你的上面显示文件夹的位置后面的蓝色字变了色。

    2. 如果想要切换分支
      在这里插入图片描述
      git的分支都是分开处理,互不干涉,所以你在这个分支改变的东西,是不会再另外一个分支显示出来的

    3. 能分一个分支,当然可以合并分支
      在这里插入图片描述

    4. 分支完之后,如果不想要那个分支可以删除
      在这里插入图片描述
      总结创建和合并分支命令如下:
      1. 查看分支 :git branch
      2.创建分支: git branch name
      3.切换分支 : git checkout name
      4.创建+切换分支: git checkout -b name
      5.合并某分支到当前分支:git merge name
      6.删除分支: git branch -d name

    5. 如果你是多人来处理一个项目就回存在一个问题, 如果多人处理同一个文件,就会出现冲突。那么冲突怎么办。
      (1) 先用cat查看文件的修改情况,判断哪些内容是自己需要的

       		Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<head是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,我们可以修改下如下后保存:</head是指主分支修改的内容,>
      
    6. 分支管理策略;
      上面的合并分支是快速合并,就是不保留任何信息,用git log 都看不到版本的信息。
      但是 带参数 -no-ff 来禁用"Fast forward"模式,就可以保留分支的信息
      分支的策略就是:首先master主分支是稳定了,所以这个是不能改变的,而干活实在新建的分支上改变的,等分支修改完毕后,才会合并主分支

    bug分支

    碰到问题,首先是应该在主分支创建一个分支来修复他,但是时间不够了,git可以将当前工作现场“隐藏起来”。
    git stash 命令
    下面的步骤都是上面合起来的,创建分支,在分支上面修复bug,然后与主分支合并,删除临时分支
    –上面提到的工作现场不是已经隐藏了,有两种方法可以恢复:
    1.git stash apply 恢复 或者 git stash drop删除
    2.一种是 git stash pop ,恢复的同时,删除stash内容

    多人协作

    1. 要查看远程库的信息,使用 git remote

    2. 查看远程库的详细信息 使用 git remote -v
      (我这里没有空的库,就不截图了)

    3. 推送分支
      什么情况,要分支推送,1.是master分支是主分支,要与远程同步2. 一些bug修复,不需要推送到远程,合并到主分支,然后推送master

    4. 抓取分支
      多人协作时,大家都会向主分支进行推送各自的修改,
      git checkout -b dev origin/dev
      创建远程的origin的dev分支到本地来
      当你改完后,
      这会就是一个问题,,你推送不上去文件,因为已经有另外一个改动了,,所以你必须要先用git pull 把最新的提交 抓下来,然后在本地合并,解决冲突再推送,这样就会成功了

  • 相关阅读:
    类加载机制深度解析
    Mysql索引数据结构详解(1)
    深入理解mysql锁与事务隔离级别
    关于redis HSCAN count参数不生效的问题
    在idea的java开发中字符串length()方法获取长度与赋值不符的问题
    在网页中使用超链接来打开本地应用(可传参数)
    断言(assert)简介
    9. Palindrome Number
    四、MapReduce
    三、HDFS——Hadoop分布式文件系统
  • 原文地址:https://www.cnblogs.com/YJBlog/p/10092216.html
Copyright © 2020-2023  润新知