zoukankan      html  css  js  c++  java
  • git

    代码版本控制工具
    我们在项目开发过程中,经常会需要将代码回退到前一天或者其他的某个时间节点,这个时候我们可以针对情况对代码进行删除等操作,但是这种删除的操作一般代价都比较大,成本比较高,这个时候我们就可以对我们的代码进行版本控制,当然我可以手动的在开发发某个功能之后,将代码文件都保存一份,然后需要更改回退的时候再将保存好的代码复原,但是这样手动的代码版本控制比较麻烦,出错几率高。
    两个代码版本控制工具:git/svn
        
    两者的区别
        svn
            是集中式管理方式,类似于中央集权制,svn会有一个中央服务器,所有的代码的版本都是管理在中央服务器的,所有开发者都会从中央服务器去选择下载想要的版本的代码,也会将写好的代码进行提交
           svn的缺点也很明显:1. 代码版本管理依赖于中央服务器,每个客户端无法在本地进行代码的版本控制 2. 一旦中央服务器奔溃(宕机)甚至数据泄露或者误删的话,整个项目的代码都没办法找回了
     
        git
           是分布式管理方式, 每一台客户端都可以看作一个中央服务器,客户端就可以在本地就进行代码版本管理,为了协同合作和代码保护有时也会需要创建一个远端仓库,因为每个客户端其实都会保留完整的代码版本库,所以安全性大大提升。
     
    git    本地基本操作
    git也是依赖于命令行工具来执行任务,但git按照后自带GUI可视化界面
    git命令行工具中会使用一些linux的操作命令
     
    我们从官网下载了git安装包后进行安装,git也是依赖于命令行工具来执行任务的,但是安装的时候会自带一个GUI这样的可视化界面,市场上也有很多可视化GIT操作,例如tortoisegit, 但是一个好的程序员都不使用可视化工具
     
    操作
    1、创建目录
     
    2、进行git仓库的初始化    git init
            Reinitialized existing Git repository in E:/git/love-letter/.git/    初始化了一个空的git仓库在项目目录中的.git文件夹就是本地仓库,里面保存了本地代码
     
    3、提交命令    git add .    
        项目目录中所有的代码添加到缓存区里
     
    4、查看上一次的提交状态   git status    
        查看当前git的状态,可以看到是
                On branch master
            No commits yet
            Changes to be committed:
           (use "git rm --cached <file>..." to unstage)
           new file:   introduce.md
              new file:   love-letter.md
          描述还没有提交,在缓存区里已经有了新文件
     
    5、把缓存区里的文件进行提交,并作出注释    git commit -am '备注的内容'
                这个时候会有一个警告:
                *** Please tell me who you are.
            Run
            git config --global user.email "you@example.com"
            git config --global user.name "Your Name"
            to set your account's default identity.
            Omit --global to set the identity only in this repository.
            fatal: unable to auto-detect email address (got 'Administrator@DCR8WCBA96DBJX9.(none)')
                git进行版本管理的时候,必须得配置一个用户名和邮箱,这样git才能知道操作者是谁,才能运行我们提交
     
    6、配置用户名和邮箱
          邮 箱:git config --global user.email "209774229@qq.com"
               用户名:git config --global user.name "Ting"
          接下来就会出现这样的情况:
           [master (root-commit) 8f5a228] 我去抽烟了,此次提交的只是写好了情书的开头,个人介绍中写个了名字
           2 files changed, 8 insertions(+)
           create mode 100644 introduce.md
           create mode 100644 love-letter.md
               8f5a228是此次提交的版本号,显示了此次提交的注释和此次提交的代码的变化  
     
    7、查看历史版本    git log
          查看有哪些版本
     
    8、查看修改后的内容    git diff
              可以查看一些当前工作区与暂存区(.git)的代码区别
     
    9、退回某个版本    
            git reset --hard HEAD^ --------->回退到上一个版本
         git reset --hard HEAD^^ --------->回退到上上个版本
         git reset --hard HEAD~N --------->回退到第N个版本 N是一个整数
            git reset --hard 版本号 --------->回退到指定版本
     
    10、查看每次的版本操作    git reflog
            就能看到我们每一次的版本操作,就能找到每个版本的版本号了
     
     
    git    本地分支操作
    git中提供了分支管理这样的机制,我们可以针对不同的功能模块利用不同的分支来管理(branch)
     
    1、创建分支    git branch 分支名
     
    2、查看分支    git branch
        包括了自己创建的本地子分支和本地主分支master
        master是创建git init时自动创建的本地组分支,而master前面的*,代表当前所在的分支
        而自己创建的分支为本地子分支
     
    3、切换分支    git checkout 分支名   
        切换分支后,进行操作之后,记得也要提交,并且,分支里面的各种操作对于其他分支来说都是独立的,彼此之间不能相互控制版本
     
    4、合并分支    git merge 分支名
        当我们项目中某个功能模块开发完成后,比如introduce已经开发完成了,需要切换回master分支,因为master分支上的代码才是真正的项目代码,最终上线的代码都在master中在A分支中执行 git merge B,就是把B分支的代码合并到A分支来
     
    5、查看哪个版本在合并时删除了某个文件    git log --diff-filter=D --summary
         当我们合并了分支之后,可能master中有a这个文件,但是在B分支中没有a这个文件,所以合并后可能a这个文件就被误删,这个时候执行:git log --diff-filter=D --summary可以看到是哪个版本在提交的时候删除了
     
    6、恢复误删的文件    git checkout 486532~1 文件名+扩展名
        情况主要是因为,master中有两个文件,但是在分支中都各只有一个文件,导致合并过来的时候出现了问题,所以,其实我们应该保证,分支中的代码和master中的文件应该是只能多不能少
     
    7、尽量保证进入新创建的分支后,别删除之前的其他的文件,不然的话在和本地主分支合并时会误删文件。当在A中修改了某个文件,在master中合并了,在B中也修改了这个文件,在master中合并的时候会出现冲突,出现>>>><<<<<=====>>>>>描述更改的地方,所以可以利用编辑器来处理冲突,也可以手动的删去不想要的内容,冲突解决完成后,才能再次提交
     
    github    远端仓库操作
    1、注册github账户并登录
     
    2、配置ssh key    ssh-keygen -t rsa -C "github账号的邮箱"
            生成好之后默认是保存在 /c/Users/Administrator/.ssh/id_rsa.pub中
     
    3、将id_rsa.pub中生成的key复制到github中的new ssh key中
            在github网站中点击setting里,有个SSH and GPG key
     
    4、在git中配置全局email和name
            邮 箱:git config --global user.email "209774229@qq.com"
           用户名:git config --global user.name "tis1002**"
            为了和github远端仓库做联系,我们将email和name配置成github账号的email和name
     
    5、与远端仓库关联的两种方式
            1)先建立仓库,再去开发    克隆远端仓库
                   a) 在本地执行    git clone远端仓库地址
                   b)然后再进行开发合并等操作    每次操作都要add和commit
                   c)将本地文件提交到远端仓库中    git push origin master/git push -u origin master -f 强制推上
                        
            2)先建立仓库,再clone,再开发,也可以先开发,再建仓,再关联
                   a)搭建node环境
                   b)创建本地仓库初始化    git init
                   c)进行git本地操作    每次操作都要add和commit
                   d)合并以及提交版本    git merge
                   f)与远端仓库进行关联    git remote add origin 远端仓库的地址    
                   e)提交到远端仓库    git push origin maste/git push -u origin master -f 强制推上
                            在每次push代码到远端的时候应该先git pull一次,将远端代码拉下来之后合并一下,没问题之后再push
  • 相关阅读:
    微信公众平台消息接口开发之校验签名与消息响应合并
    微信公众平台开发之在网页上添加分享到朋友圈,关注微信号等按钮
    微信公众平台自定义菜单PHP开发
    所有边权均不相同的无向图最小生成树是唯一的证明
    无向带权图的最小生成树算法——Prim及Kruskal算法思路
    排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
    B树、B-树、B+树、B*树
    森林、树与二叉树相互转换
    普通树转换成二叉树
    哈夫曼树
  • 原文地址:https://www.cnblogs.com/tis100204/p/10297381.html
Copyright © 2011-2022 走看看