zoukankan      html  css  js  c++  java
  • 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 把最新的提交 抓下来,然后在本地合并,解决冲突再推送,这样就会成功了

  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/YJBlog/p/10092216.html
Copyright © 2011-2022 走看看