zoukankan      html  css  js  c++  java
  • Git的简单使用

    一. Git与SVN

    1.1 SVN

      SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。

      集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。不顾缺点很明显,如果中央服务器发生故障,那么所有人都要等服务器能正常使用时才能提交代码,一定程度上会对项目进度产生影响。

    1.2 Git

      Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
      下图就是分布式版本控制工具管理方式:

      

    1.3 Git工作流程

      1.从远程仓库中克隆 Git 资源作为本地仓库。
      2.从本地仓库中checkout代码然后进行代码修改
      3.在提交前先将代码提交到暂存区。
      4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
      5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。

      注意:

      开发过程中要提交新功能时,一定要遵循先拉取(pull),再提交(push)
      1)提交新功能(先提交,提交后拉取,可能就会出现冲突)
        >: git add .
        >: git commit -m '提交新功能的信息说明'
      2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取)
        >: git pull 源名 分支名 => git pull origin master
      3)提交到远程仓库(现在是主分支)
        >:git push 源名 分支名 => git push origin master

    二. Git的安装及使用

    2.1 Git的安装及使用前准备

      这里未介绍可视化界面(如TortoiseGit)的安装 ,只介绍git的安装及使用,以及在pycharm中如何使用git。

      1. 首先去官网下载对应版本的git:

    1.下载对应版本:https://git-scm.com/download
    2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
    3. 安装成功后桌面右键可以看到git菜单

       2. 搭建本地git仓库的两种方式

    # 将已有的文件夹作为git仓库
    >:  cd 目标文件夹内部
    >:  git init
    
    # 在指定目录下创建git仓库
    >:  cd 目标目录
    >:  git init 仓库名

       3. 配置操作git的用户信息

    # 局部配置
    >: git config user.name '用户名'>: git config user.email '用户邮箱'
        
    注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
    
    
    # 全局配置
    >: git config --global user.name '用户名'
    >: git config --global user.email '用户邮箱'
    
    注:在全局文件 C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用

     2.2 Git常用指令

      1. 查看仓库状态命令

    # 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
    >: git status  
        -- 查看仓库状态
    >: git status -s  
        -- 查看仓库状态的简约显示

      2. 工作区操作

         通过任何方式完成的文件删与改可以撤销回滚。注意空文件夹时不会被git记录。
      工作区内容提交至暂存区:
    """
    >: git add .  
        -- 添加项目中所有文件
    >: git add 文件名  
        -- 添加指定文件
    """
      撤销暂存区提交:add的逆操作
    """
    >: git reset HEAD .
        -- 撤销所有暂存区的提交
    >: git reset 文件名
        -- 撤销某一文件的暂存区提交
    """
      撤销工作区的操作:改、删 (前提是目标文件使用add命令加入了暂存区):
    """
    >: git checkout .
        -- 撤销所有暂存区的提交
    >: git checkout 文件名
        -- 撤销某一文件的暂存区提交
    """

       提交暂存区内容至版本库(本地仓库):

    git commit -m "版本描述信息"
      撤销版本库提交:commit的逆操作
    """
    回滚暂存区已经提交到版本库的操作:
        查看历史版本:
            >: git log
            >: git reflog
        查看时间点之前|之后的日志:
            >: git log --after 2018-6-1
            >: git log --before 2018-6-1
            >: git reflog --after 2018-6-1
            >: git reflog --before 2018-6-1
        查看指定开发者日志
            >: git log --author author_name
            >: git reflog --author author_name
        回滚到指定版本:
            回滚到上一个版本:
                >: git reset --hard HEAD^
                >: git reset --hard HEAD~1
            回滚到上三个版本:
                >: git reset --hard HEAD^^^
                >: git reset --hard HEAD~3
            回滚到指定版本号的版本:
                >: git reset --hard 版本号
                >: eg: git reset --hard 35cb292
    """

       3. 过滤文件

      windows中过滤文件时,可以新建.gitignore文件,往里面添加文件的名字或相对路径的方式来实现。不过注意新建.gitignore时要在后面多加一个.

    .gitignore.
    # .gitignore 文件
    # 1)在仓库根目录下创建该文件
    # 2)文件与文件夹均可以被过滤
    # 3)文件过滤语法
    
    """ 过滤文件内容
    文件或文件夹名:代表所有目录下的文件或文件夹都被过滤
    /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
    目录/文件或文件夹名:代表特定目录下的文件或文件夹被过滤
    """

      4. 生成密钥

      使用ssh的方式配置远程源时,需要配置密钥:

    # git bash中生成密钥的命令
      ssh-keygen -t rsa

      

      生成之后windows中公钥私钥默认保存在C:Users用户名.ssh下:

      然后将公钥中的内容复制出来,在远程仓库中配置即可。比如在GitHub中配置如下:

          

       点击New SSH key把自己的公钥复制进去即可,公钥是一台电脑配一次即可。

      

      5. 配置远程源

      远程源目前主要由三种,分别是Github、码云以及Gitlab,他们之间的使用都大同小异。可采用 https协议 或 ssh协议 与远程git仓库通信提交提交代码(一般都是项目负责人完成)

      https协议方式:

    >: git remote add origin https://gitee.com/doctor_owen/luffy.git  # 配置远程源
    
    >: git push -u origin master  # 提交本地仓库到远程源

      ssh协议

    >: git remote add origin git@gitee.com:doctor_owen/luffy.git  # 配置远程源
    
    >: git push -u origin master  # 提交本地仓库到远程源

      查看源及源链接信息:

    >: git remote
    >: git remote -v
    
    # 删除源链接
    >:  git remote remove 源名字 

        注意:origin远程源的源名,可以自定义;master是分支名,是默认的主分支。

      新建一个远程仓库的时候(比如GitHub),如果新建了README文件,那么本地仓库使用push时,会报错,而且会建议你push前使用pull,可是这时使用git pull origin master后push还是会报错。此时可以使用以下命令将README先同步到本地,然后再正常使用push即可。

    git pull --rebase origin master

      6. 多分支操作

    -查看分支
        -git branch     #查看本地分支
        -git branch -r  #查看远程分支
    
    -新建分支
        git branch 分支名字   #新建本地分支
        
    -同步到远程
        -提交,push:git push origin lqztest
    -切换分支
        git checkout lqztest
    -合并代码
        -切到主分支:git checkout master
        -git merge lqznew
    -删除分支
        #删除本地
        git branch -d 分支名
        #删除远程
        git push origin --delete 分支名
            
    -分支合并时冲突的解决
        -跟正常冲突解决一样

      7. 冲突解决

      冲突的存在实际上因为多人修改了同一行代码,当出现冲突时,使用pull下拉代码时会保存你的代码和远程的代码(前提是你工作区中写的代码用add和commit提交至了本地仓库,不然出现冲突时自己写的代码直接会没掉):

      这个时候出现冲突时与同事协商处理即可,最后将冲突解决之后的代码push至远程仓库。

      可以参考以下链接https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344

    2.3 在pycharm中使用git

      1 使用
      安装好pycharm后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。
      选择File→Settings打开设置窗口,找到Version Control下的git选项:
      选择git的安装目录后可以点击“Test”按钮测试是否正确配置。
      2 将工程添加至git
    1)在pycharm中创建一个工程,例如创建一个python工程,名称为git-test,如下图所示:
    2)创建本地仓库
      在菜单中选择“vcs”→Import into Version Control→Create Git Repository...
      选择工程所在的上级目录。本例中应该选择idea-projects目录,然后点击“OK”按钮,在工程的上级目录创建本地仓库,那么idea-projects目录就是本地仓库的工作目录,此目录中的工程就可以添加到本地仓库中。也就是可以把idea-git-test工程添加到本地仓库中。
    选择之后在工具栏上就多出了git相关工具按钮:
    2)将工程添加至本地仓库
      直接点击按钮
      将工程提交至本地仓库
    然后点击“commit”按钮,将工程添加至本地仓库。 :
    3)推送到远程
      在github上创建一个仓库然后将本地仓库推送到远程。
      在工程上点击右键,选择git→Repository→push,
      或者在菜单中选择vcs→git→push
      点击“Define remote”链接,配置https形式的URL,git形式的无法通过。然后点击OK
      点击“push”按钮就讲本地仓库推送到远程,如果是第一次配置推送需要输入github的用户名和密码。
      打开本地Windows的cmd命令窗口,输入 rundll32.exe keymgr.dll,KRShowKeyMgr 将之前存储的git提交时保留的用户名密码删除
      3 从远程仓库克隆
      在pycharm的设置中:
      关闭工程后,在Pycharm的欢迎页上有“Check out from version control”下拉框,选择git
      此处仍然推荐使用htts形式的url,点击“test”按钮后显示连接成功。
      点击OK按钮后根据提示将远程仓库克隆下来,然后倒入到Pycharm中。
      4 从服务端拉取代码
      如果需要从服务端同步代码可以使用工具条中的“update”按钮

     

    2.4 Git团队开发流程

    """
    管理员
    1.管理员配置与线上账号密码系统的本地全局账号密码
    >: git config --global user.name "doctor_owen"
    >: git config --global user.email "doctor_owen@163.com"
    
    2.本地初始化git仓库(可以建立一个项目架构)
        1)创建项目
        2)进入项目目录初始化仓库:
            >: git init
        3)提交代码到本地版本库
    3.创建一个远程空仓库(码云)
    4.将本地版本库同步到远程仓库
        1)在本地仓库内添加远程仓库源,源名默认就采用origin,就采用https协议即可
            >: git remote add origin https://gitee.com/doctor_owen/luffy.git
        2)将本地版本库提交到远程版本库,需要远程仓库账号密码
            >: git push -u origin master
    
    开发者
    5.要参与开发的成员配置本地全局账号密码
    >: git config --global user.name "owen"
    >: git config --global user.email "owen@163.com"
    
    6.生成本机的SSH公钥提供给管理员
    >: ssh-keygen -t rsa -C "owen@163.com"
    
    管理员
    7.添加开发者提供的公钥到 个人公钥 并非是 公钥,并给开发者提供远程仓库SSH地址
        仓库 => 管理 => 添加公钥 => 添加个人公钥
        SSH地址:git@gitee.com:doctor_owen/luffy.git
    
    开发者
    8.在本机任意合适位置clone远程仓库到本地
    >: git clone git@gitee.com:doctor_owen/luffy.git
    
    9.进入本地项目仓库进行开发,可以查看远程源
    >: cd luffy
    >: git remote -v
    注:origin  git@gitee.com:doctor_owen/luffy.git (fetch) & (push)
    
    10.开发过程中要提交新功能时,一定要遵循先拉取(pull),在提交(push)
        1)提交新功能(先提交,提交后拉取,可能就会出现冲突)
            >: git add .
            >: git commit -m '提交新功能的信息说明'
        2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取)
            >: git pull 源名 分支名 => git pull origin master
        3)提交到远程仓库(现在是主分支)
            >:git push 源名 分支名 => git push origin master
    """
    View Code

      更多知识,比如TortoiseGit可视化工具的使用等见一下链接:

     https://note.youdao.com/ynoteshare1/index.html?id=1477b520800edbdb712d4fbb76ec125e&type=note

  • 相关阅读:
    hdu 1024 Max Sum Plus Plus DP
    九月回顾 这篇文章和ACM毫无关系= =
    HDU 3974 Assign the task 并查集/图论/线段树
    poj 3264 Balanced Lineup RMQ问题
    zoj 1610 Count the Colors 线段树区间更新/暴力
    poj 3468 A Simple Problem with Integers 线段树区间加,区间查询和
    hdu 4027 Can you answer these queries? 线段树区间开根号,区间求和
    hdu 5195 DZY Loves Topological Sorting 线段树+拓扑排序
    codeforces 19D D. Points 树套树
    codeforces 85D D. Sum of Medians Vector的妙用
  • 原文地址:https://www.cnblogs.com/maoruqiang/p/11197051.html
Copyright © 2011-2022 走看看