zoukankan      html  css  js  c++  java
  • Git的使用(一)

    前言

    1、版本管理工具总结

    开发团队项目,对项目的版本进行管理。

    使用过的版本管理工具:

    TFS、SVN与Git。

    TFS:管理项目,通过visual Studio管理源码,拉取分支,提交代码等。也可以直接通过idea管理源码(2017版本以后好像没有自动集成TFS)链接(百度)

    SVN:安装,培训手册,常用操作。链接(百度)

    2、

    global 全局的
    master 主干

    一、什么是Git

    1、定义

    Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(参看百度百科)

    2、GitHub

    GitHub是通过Git进行版本控制的软件源代码托管服务平台,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。
    GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开或私有的代码仓库,但付费用户支持更多功能。根据在2009年的Git用户调查,GitHub是最流行的Git访问站点。[3]除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。GitHub也提供了图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。
    截止到2015年,GitHub已经有超过两千八百万注册用户[4]和5700万代码库。[5]事实上已经成为了世界上最大的代码存放网站和开源社区。[6]
    2018年6月4日晚上,美国科技公司微软宣布以75亿美元的股票收购GitHub[7][8][9]。

    参看链接:https://zh.wikipedia.org/wiki/GitHub

    二、集中式管理与分布式管理

    两张图看懂集中式版本控制系统和分布式版本控制系统的区别。


    集中式管理系统的特点:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
    本地是没有版本库的修改记录的,所以集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。

     

    首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
    既然是多人协作,我们肯定是需要指定一个人的电脑作为总仓库,所以人从他的电脑上提交更新,拉取别人的提交,这样才能保证他的仓库保留了所有人的改动。 这个人其实就充当了集中式中的服务器仓库的角色。
    所以我们通常说的分布式管理系统的服务器就是其实就是找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

    参看链接:https://www.zhihu.com/question/25577853/answer/550990502

    1.集中式版本控制系统(CVS,SVN,TFS)

    有一个中央服务器,干活的时候,用的都是自己的电脑,需要先从中央服务器获取最新的版本,然后开始干活,干完活了,再把自己的修改推动给中央服务器。

    缺点:需要联网的情况下才能使用,上传速度慢。

    2.分布式版本控制系统(最常见的Git)

    分布式版本控制系统没有中央服务器,每个人的电脑上都用一个完整的版本库,只要交换对方的修改就行,把各自的修改推送给对方。

    分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

    优点:安全性高,不需要联网

    参看链接:https://www.zhihu.com/question/25577853/answer/72757984

    三、Git的安装

    3.1本地安装git

    1、安装

    参看链接:

    https://www.cnblogs.com/ximiaomiao/p/7140456.html

    https://blog.csdn.net/C10062000/article/details/89854669

    https://www.cnblogs.com/carriezhao/p/10775275.html

    2、查看是否安装成功

    查看git版本

    cmd  git --version

    回到电脑桌面,鼠标右击如果看到有两个git单词则安装成功

     

    3、Git安装之后需要进行一些基本信息设置

      a、设置用户名:git  config -- global  user.name  '你再github上注册的用户名';
    
      b、设置用户邮箱:git  config -- global  user.email  '注册时候的邮箱';

    注意:该配置会在github主页上显示谁提交了该文件。

       c、配置ok之后,我们用如下命令来看看是否配置成功

      git config --list

    注意:git  config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱。

    4、创建github账号

    1、通过github管理代码。

    1、通过GitHub Desktop可视化工具注册Git账号;

    3.2Window下的git配置文件在哪里【图文】

    3.2.1全局配置文件位置

     3.2.2项目个性化配置位置

     

     

    四、Git的常用命令

    4.1、初始化一个git库

    1、通过如下命令:

    git init

    一般一些简单如clon代码,拉取、提交等操作使用cmd命令行窗口就可以,没有必要用Git base。

    4.2、创建文件并提交到本地仓库

    1、常用命令

    创建文件:touch
    编辑文件:vi
    删除文件:git rm
    查看本地变更:git status
    提交到暂存区:git add 相当于visual studio里的暂存。点击commit的时候,只会提交你暂存的内容,否则会将本地的所有更改,提交到本地仓库。
    提交文件到本地仓库:git commit

    这几个命令只是简单的操作,如下图所示;没有涉及到解决代码冲突的问题,下面进行记述。

     

     

    4.3、Git管理远程仓库

    4.3.1使用远程仓库的目的备份、实现代码共享集中化管理Git远程仓库实际上就是保持在服务器上的git仓库文件。

     

     

    4.3.2、Git克隆操作:将远程仓库(github上对应的项目)复制到本地

    1、命令

    git clone 仓库地址

    2、仓库地址由来如下

    3、克隆项目

     4、将本地仓库同步到git远程仓库中

    git push

    5、克隆reins项目

    git clone http://10.10.xx.xx:8080/tfs/5%8F%B0/_git/x   ReinsV1.4.x.0
    进入目录
    cd Reins1.4.5.0
    查看服务器所有分支
    git branch -a
    获取版本
    git checkout feature/V1.4.x.0
    拉取最新版本
    git pull
    查看当前分支
    git branch

    git clone会下载项目x并创建标黄的文件夹。ReinsV1.4.x.0就是本地仓库,里面会有.git文件。

    从远程git clone代码,是下载的全量的文件(即会下载所有分支的代码,.git里面的代码是增量式保存的。)下载到本地后,通过git checkout切换分支。
    6、PICC GIT 新建并导入本地项目
    1、新建存储库,建立好后,不要点击初始化
    2、切换到本地项目根目录打开cmd命令窗口
    3、git init
    4、git remote add origin http://tfs.piccnet.com.cn:8080/tfs/PICCCollection/%E5%86%8D%E4%BF%9D%E9%99%A9%E9%9B%86%E4%B8%AD%E5%A4%84%E7%90%86%E5%B9%B3%E5%8F%B0/_git/reins-query
    5、git add .
    6、git commit -m  '提交的说明'
    7、git push -u origin --all

    4.4、创建分支,切换分支

    4.4及4.5、4.6下面这几点都写在后面的章节。

    4.5、合并代码,解决冲突

    4.6、回滚代码

    4.7、Git对SVN 的支持

    git svn clone  url

    如图:从远程下载pdfc文件。

    参看链接:https://blog.csdn.net/easonchenys/article/details/38565123的简单说明。

    五、Git视图化管理工具GitHub Desktop

    1、创建仓库

    2、创建分支

    3、合并分支

    4、解决冲突

    5、版本回退   

    参看链接:

    https://blog.csdn.net/weixin_44447687/article/details/99415279

    https://www.cnblogs.com/yanglh6-jyx/p/GitHub.html

    六、idea使用git

    6.1参看链接

    https://blog.csdn.net/qq_40563761/article/details/91347443

    https://blog.csdn.net/mucaoyx/article/details/98476174

    6.2idea更新与提交代码

    1、提交代码

    提交代码前先fetch(将代码从远程仓库更新到本地仓库),

    再pull(从本地仓库更新代码到开发工具);

    再提交commit(提交到本地),

    最后push(提交到远程仓库)。

    2、git pull failed 用stach解决

    本地代码先 git stash ;(stash作用见参考)
    然后pull代码;
    最终再unstash changes;

    3、原理

    git stach相当于先把当前代码暂时备份,然后代码会恢复到未修改之前;

    此时可以进行pull操作;

    unstash changes相当于把原来备份的代码再放出,并与更新后的代码进行合并。

    参看链接:https://blog.csdn.net/xianyu_x/article/details/105040896

    七、git设置代理

    1、配置
            a、设置代理:
                git config --global http.proxy proxy.piccnet.com.cn:3128
                git config --global https.proxy proxy.piccnet.com.cn:3128
            b、取消代理:
                git config --global --unset http.proxy
                git config --global --unset https.proxy
            c、npm设置代理
                npm config set proxy http://10.1.249.61:3128
                npm config set https-proxy http://10.1.249.61:3128
            d、npm取消代理
                npm config delete proxy
                npm config delete https-proxy
    如果错过太阳时你流了泪,那你也要错过群星了。
    在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
    不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。
  • 相关阅读:
    Tomcat 加载 jsp 异常:ServletException: java.lang.LinkageError
    SpringMvc CharacterEncodingFilter 解析 encoding 参数并初始化参数
    查看 chrome 浏览器中的 Headers
    SpringMvc @PathVariable 工作原理
    SpringMvc HandlerMethodResolver 的 handlerMethods & ServletHandlerMethodResolver 的 mappings 在哪里初始化的 ?
    SpringMvc HandlerMappings 何时初始化?
    scanperiod 不生效
    SLF4J bindings
    spring-boot 根据环境启动
    TmeUnit
  • 原文地址:https://www.cnblogs.com/szrs/p/12215050.html
Copyright © 2011-2022 走看看