zoukankan      html  css  js  c++  java
  • git使用

    一、正常提交版本分支

    1、启动

      直接在文件夹内右键,出现两个选项,一般使用Bash命令端

    2、进入命令端后init初始化该文件夹,之后会在该文件夹下自动生成一个.git文件夹,它用于管理这个文件夹的所有版本管理

    git init

    3、git add添加文件进行暂存状态

    git add filename  # 添加指定文件
    git add .              # 添加当前目录下,以及子目录下的文件

    4、status查看文件是否在管理状态或者有被改动

      1)、在暂存状态下,并且未被修改,文件显示绿色

      2)、不在暂存状态下,或者暂存状态下文件被修改,文件状态显示红色,此时需要重新add进行更新

    5、真正进行提交版本,将文件添加到版本库的分支

    git commit -m ‘版本描述’

      1)、第一次使用需要配置邮箱和用户名

       2)、配置完后再将文件添加到版本库的分支

    6、查看提交记录,即:历史版本记录

     

    至此一个版本已经建立完成。

    二、几种回滚

      1、修改过的内容回滚到原内容

    git checkout “文件名”

      2、版本分支回滚到暂存状态

    get reset --soft  版本号

       3、将暂存状态回滚到非暂存状态(工作区):不常用

    git reset head 文件名

      4、将版本分支回滚到非暂存状态:不常用

    git reset --mix 版本号

      5、将当前版本分支回滚到任意版本分支

    git reflog  # 先获取版本记录
    git reset --hard 版本号

    三、上线版本出现bug,需要立即进行处理。而此时新需求开发到一半,这时该怎么办。

      方案1:stash,将新需求已经开发的部分存放到另外一个地方。

    git stash # 将已经开发到一半的新需求暂存起来
    git status # 此时已经回到版本分支最初状态,开始修复bug
    git add .  # bug 修复完成,将修复完的代码添加到暂存状态
    git commit --m "版本描述:修复bug"  # 将修改bug后的版本提交到版本分支
    git stash pop  #将开发到一半的需求再拿回来

    修复bug时,覆盖了暂存起来的代码。当你把暂存起来的代码拿出来,此时会让你一 一手动选择

     stash相关常用命令:

    git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
    git stash list        查看“某个地方”存储的所有记录
    git stash clear     清空“某个地方”
    git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
    git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
    git stash drop      编号,删除指定编号的记录

      方案2:branch(常用)

        默认分支为master,该分支一般不会在上面操作,主要用于存储上线版本。使用命令创建另外一个分支,在分支下进行开发,一般修改bug在一个分支,开发在一个分支,协同开发另建分支,最后合并到master

        创建分支:

    git branch dev  #创建dev分支
    git checkout dev  #进入到dev分支

        进入到dev分支后,开始正常开发,开发完成新的需求后创建版本分支,此时master并不会受到影响,回到master分支后,内容还是开发新需求之前的内容。如果需要将dev分支上的新需求上线,此时可以将dev合并到master。

    git checkout master # 首先需要将分支切换到需要合并至的分支
    git merge dev # 将dev分支合并至master

        处理bug也是一样,先在上线版本分支下进行创建分支bug,处理完bug后合并即可

        注意:git merge 合并时也可能会出现冲突,解决冲突的方式上述stash相同,即:找到冲突文件,手动修改冲突并提交

    branch常用命令:

    git branch 分支名称             创建分支
    git checkout 分支名称          切换分支
    git branch -m 分支名称        修改分支名称
    git branch                          查看所有分支
    git branch -d 分支名称         删除分支
    git merge 分支名称              将指定分支合并到当前分支

      

    github:

      结合github远程仓库,将代码上传至远程仓库,实现异地无缝衔接开发

       1、创建github账户

       2、创建仓库

       3、通过git将项目上传至仓库,会弹出登录页面让你进行登录github账户

    git remote add origin https://github.com/AikeCool/bbs.git  #为仓库地址取名为origin
    
    
    git push -u origin master  # 将本地master分支内容以及版本信息推送到GitHub

       4、还可以将其它分支上传至仓库,因为真正开发一般都是在其他分支,例如dev,所以需要将dev分支上传至远程仓库

    git push -u origin dev #将dev分支上传至远程仓库

      

       5、上传至远程仓库,主要用于异地无缝衔接开发,假如远程仓库是在公司创建的,我们在家中如何进行开发呢?

        第一次在家中进行开发:

          1)、将上传至远程仓库的文件克隆下来

    git clone  https://github.com/AikeCool/bbs.git  # 克隆,默认只能取到master分支

          2)、因为真正开发都是在dev分支,所以需要从服务器上取到它

    git branch dev origin/dev      # 创建dev分支且和远程dev分支同步

          3)、切换至dev分支

    git checkout dev       # 切换到dev分支

          这时就可以在本地进行开发了,开发完毕后,记得将项目添加到版本库的分支,并且上传至服务器,这样才能在不同的工作地点接着开发。

    $ vim app01/views.py                           # 继续开发新功能
    $ git add .                                           # 添加文件到版本库的暂存状态
    $ git commit -m '在家里开发的功能'        # 提交新功能到版本库的分支
    $ git push origin dev                               # 提交dev分支内容到远程GitHub托管仓库的dev分支

      6、当家里开发的功能上传到远程仓库后,隔天回到公司该如何继续开发呢?

          1)、切换到dev分支

    git checkout dev   # 切换到dev分支

          2)、从远程仓库获取最新dev分支内容,并合并到本地

    git pull origin dev   # 从远程GitHub仓库获取dev分支最新内容,并合并到本地

           3)、开始开发

    vim app01/views.py                          # 继续开发新功能
    git add .                                         # 添加文件到版本库的暂存状态
    git commit -m '在公司开发功能1'          # 提交新功能到版本库的分支
    git push origin dev                              # 将dev分支提交到远程仓库

       7、继续在家中进行开发,但此时已经不是第一次在家里进行开发了

    git checkout dev          # 切换到dev分支
    git fetch origin dev      # 从GitHub仓库获取dev分支最新内容到版本库的分支
    $ git merge origin/dev      # 将版本库的分支内容合并到工作区
    app01/views.py                                 # 继续开发新功能
    git add .                                          # 添加文件到版本库的暂存状态
    git commit -m 'xxxxxxxxxxx'                        # 提交新功能到版本库的分支

    长此以往,将Git和GitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题

    【git pull origin 分支】命令等同于【git fetch origin 分支】+ 【git merge origin/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。

    github协同开发:

    • 合作者,将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码。
    • 组织,创建一个组织,然后再该组织下可以创建多个项目,组内成员可以向组内所有项目提交代码。PS:也可以对某个项目指定合作者

    协同开发命令和以上步骤类似,此处就不再重新写代码,而是使用文件描述三人协同开发整个过程。

    • 创建程序
      • 用户A创建程序,提交到GitHub
      • 用户B克隆项目
      • 用户C克隆项目
    • 开发功能
      • 用户A开发功能1
      • 用户B开发功能2
      • 用户C开发功能3
    • 提交
      • 用户A提交功能1,并push(A用户手速快,先提交。)
      • 用户B提交功能2,无法push,因为GitHub上已经有其他人提交的新代码。
        解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能2。
      • 用户C提交功能3,无法push,无法提交,因为GitHub上已经有其他人提交的新代码。
        解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能3。
    • 获取最新代码
      • 用户A获取最新代码
      • 用户B获取最新代码
      • 用户C获取最新代码

    在上面红色标注的解决方法位置可以有三种方式操作,三者都可以完成合并并提交新功能,但是日志记录会有差异,如:前两者版本记录中会出现合并,而第三种可以保证版本记录干净整洁。

    • 先 git pull origin master   然后 git push origin master
    • 先 git fetch origin master 然后 git merge origin/master   再 git push origin master 
    •  

      先 git fetch origin master 然后 git rebase origin/master  再 git push origin master

    使用Git之小P创业上市期

    终于终于小P等到了公司上市实现财务自由,但作为一个技术屌还是脱离不了屌丝的本质,所以每天都是逛逛github,看看别人有什么好的项目,自己可以给他挑挑bug装装逼,但是别人不可能给小P搞成合作者什么的,那怎么才能给别人贡献代码呢?那就是fork了。。。。

    • 找到想搞的项目,fork一下,然后这个项目就在自己仓库出现了
    • 从自己仓库获取代码并进行编辑提交
    • 创建并提交一个pull request,然后等待原作者是否同意这个pull request,如果同意那么在作者的源代码中就推出现小P提交的功能
        

    其他补充

    1. 配置文件

    Git的配置文件有三个:

    • 系统配置: /private/etc/gitconfig
    • 用户配置: ~/.gitconfig
    • 项目配置:.git/config

    2. 用户凭证

    由于Git和Github交互操作可能会很频繁,那么一定少了用户授权的操作,为了防止每次操作重复输入用户名和密码,Git提供了两种解决方法:

    • 秘钥
      首先创建一对秘钥  ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。
      注意:这种方式需要使用GIt中 git@github.com:WuPeiqi/xxxxx.git 格式地址。
    • 密码
      Https访问git时,避免每次操作需要输入用户名和密码,可以在配置文件中添加如下配置项:
          [credential]
          helper = store/cache/第三方

      store:
              表示将用户名和密码保存在硬盘上
              第一次输入过用户名和密码之后,用户名和密码就会保存在当前用户根目录的 .git-credentials 文件中,内容格式为:https://用户名:密码@github.com

              自动添加配置命令:git config credential.helper store
      cache:
              表示将用户名和密码保存在缓存中
              第一次输入过用户名和密码之后,用户名和密码就会保存在缓存中,默认超时时间是 900 秒,缓存相关文件保存在当前用户根目录的 git-credential-cache 中
              自动添加配置命令:
                     git config credential.helper cache
                     git config credential.helper 'cache --timeout=300'

      相关操作:
              清除缓存:git credential-cache exit
              指定超时:
                  [credential]
                  helper = cache --timeout=300
      注意:
               这种方式需要使用GIt中 https://github.com/WuPeiqi/xxxx.git 格式地址。
               指定用户名和密码: https://用户名:密码@github.com/wupeiqi/xxx.git 

    版本相关:

        git tag -a v1.0 -m '版本介绍'        本地创建Tag
        git show v1.0                       查看
        git tags -n                         查看本地Tag
        git tag -l 'v1.4.2.*'               查看本地Tag,模糊匹配
        git tag -d v1.0                     删除Tag
        git push origin :refs/tags/v0.2     更新远程tag
        git checkout v.10                   切换tag
        git fetch origin tag V1.2
    
        git push origin  --tags
        git pull origin  --tags
        
        git clone -b v0.1
  • 相关阅读:
    maven中如何打包源代码
    多模块Maven项目如何使用javadoc插件生成文档
    maven 添加jar到中央/远程仓库
    maven中的snapshot来源与注意事项
    maven 管理
    spring 判断非空提示断言
    powerdesigner 生成数据库脚本
    GOOD BLOG URL
    正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度
    oracle 学习blogs
  • 原文地址:https://www.cnblogs.com/aizhinong/p/12669181.html
Copyright © 2011-2022 走看看