zoukankan      html  css  js  c++  java
  • git-开发-问题

    学习无他法,唯有持之以恒

    Git解决中文乱码问题
    git status 乱码
    解决方法:
    git config --global core.quotepath false

    git commit 乱码
    解决方法:
    git config --global i18n.commitencoding utf-8

    git status 乱码
    解决方法:
    git config --global i18n.logoutputencoding utf-8

    注意:如果是Linux系统,需要设置环境变量 export LESSCHARSET=utf-8

    开发修改:

    @Author: SFP-PFE-AUTO  >>>> @Author : SFP-FIA-AUTO
    gitlab上未合并的项目,merge reques的内容如何下载并合并到当前的项目中使用
    https://baijiahao.baidu.com/s?id=1627219440390872098&wfr=spider&for=pc
    # 1、找到下载按钮,下载Plain diff(补丁)包到本地,放入项目文件夹下
    # 2、在git中切换到当前项目路径下
    # 3、执行命令
    git apply --stat patchfile
    git apply --check patchfile
    git apply patchfile
    # 这三条命令分别是,检查patch文件格式,测试patch是否能应用到当前分支,应用此patch
    # git apply、git am打补丁.diff 和 .patch
    git 查看公钥
    <>方法一:
    <>文件夹方式查看
    window系统打开目录文件:
    C:/Users/user/.ssh/id_rsa.pub
    复制该文件中全部内容为ssh-key。
    <>方法二:
    <>git bash方式查看
    依次输入以下命令,最后获取的文件内容为ssh-key
    $ cd ~/.ssh //如果该命令无效的话,则本地没有ssh-key公钥,需要创建本地公钥
    $ ls
    $ cat id_rsa.pub
    git push到远端后,如何撤回push
    1、本地reset到无问题commit
    >> git reset --hard <版本号>
    2、push到相应分支并覆盖
    >> git push origin <分支名>  --force
    删除本地分支名、远程分支名
    1、git branch -a # 查看所有分支名
    2、git branch -d/-D(强制删除) # 删除本地分支名
    3、git push origin --delete + 远程分支名  # 删除远程分支名

    git常见退出命令:

    >>> ctrl+d 退出
    >>> 进入vim编辑器 退出 ESC切换到命令行模式 >> wq(保存并退出) q!(不保存,强退)
    >>> git log查看commit记录的退出 >> q或者zz
    >>> ctrl+c
    >>> exit / quit
    >>qqgit

    远程分支已经删除,但本地查询还存在,如何删除

    1、git branch -a
    2、git remote show origin  # 查看远程所有分支
    3、git remote prune origin # 清空删除远程已经不存在的分支

    1、为每次新的提交,手动在远程创建branch,from master 基于master分支

    # 执行本地更新:
    git remote update

    2、修改最新commit的提交信息

    $ git commit --amend
    # 进入commit编辑界面,编辑后保存即可

    3、不常用的操作

    git restore <file>  # 恢复文件 暂存起来
    rm <file> -r  #删除本地仓库指定文件

    git reset有三个选项,--hard、--mixed、--soft。

    # 仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
    git reset --soft 版本库ID
    ​
    # 仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
    git reset --mixed 版本库ID
    ​
    # 彻底将工作区、暂存区和版本库记录恢复到指定的版本库
    git reset --hard 版本库ID

    撤销commit/add

    git reset HEAD . 回退所有add到暂存区的部分#
    git reset HEAD + 要回退的文件#
    git reset --head +回退的版本号  # 回退commit部分到原始本地创库

    每次提交都应该为case新建一个branch,以免错乱冲突等问题产生

    git checkout -b ---分支名--   # 创建新的分支并切换到其下

    reset与revert的区别

    git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
    在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是直接把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
    git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

    查看提交的commit的变化

    git diff  # commit的详细变动

    git秘钥

    1、配置
    git config –global user.name "xxxxx"
    git config –global user.email "xxx@xx.xxx"
    注:查下是否配置成功,用命令
    git config --global --list
    2、生成秘钥
    ssh-keygen -t rsa -C  "上面的邮箱"
    注:执行上面命令后,连续回车3次
    3、打印
    cd ~/.ssh
    cat id_rsa.pub

    gitlab问题

    远程同步

    # 下载远程仓库的所有变动
    $ git fetch [remote]
    ​
    # 显示所有远程仓库
    $ git remote -v
    ​
    # 增加一个新的远程仓库,并命名
    $ git remote add [shortname] [url]
    ​
    # 取回远程仓库的变化,并与本地分支合并
    $ git pull [remote] [branch]
    ​
    # 上传本地指定分支到远程仓库
    $ git push [remote] [branch]
    ​
    # 强行推送当前分支到远程仓库,即使有冲突
    $ git push [remote] --force
     
    # 推送所有分支到远程仓库
    $ git push [remote] --all

    内部文档

    Clone and setup FAF project

    1、fork FAF3.X >>> fork(分叉)FAF3.X到自己的分支

    2、Create Development branch 创建开发分支

    $ git branch [ branch-name ] 创建分支

    $ git checkout -b [ branch ] 创建并切换分支

    3、$ git checkout Development 切换分支

    ---- 本地直接切换到远程项目的Development即可 先切换在clone

    4、Add remote 添加远程分支

    $ git remote add <remote-name> ssh://git@gitlab.devtools.intel.com:29418/sfp-pfe- auto/firmware-automation-framework.git

    *<remote-name> can be customized by yourself

    创建远程分支名(自己定制)

    Development:开发

    1、开发新代码

    2、git add . & git commit -m "详细描述信息"

    3、冲突问题:执行pull --rebase 拉

    $ git pull --rebase <remote-name> Development

    4、Push code to personal repository

    将代码推送到个人存储库:$ git push origin Development

    Create merge request

    创建合并请求

    1、进入个人项目,点击顶部create merge request按钮

    2、可选择设置要进行代码检查的指定对象(组内人员即可)

    3、默认审批人是SFP组(包括我们的所有团队成员)

    4、默认批准数为2,合并请求作者可以执行批准

    5、批准后,项目业主和维护方可以合并(审批通过后方可提交合并按钮)

     

    Submit code update while merge request reviewing

    合并请求审阅时提交代码更新;提交新提交(推荐)>>指后续开发更新修改的代码部分

    1、开发新新代码

    2、git add . & git commit -m "详细描述信息"

    3、$git push origin Development

    4、Repeat 1-3 while new commit want to submit

    当新提交要提交时重复1-3

    When code change is strongly related to the latest commit or the code change is minimal, couldamend commit (not recommended. use with cautio

    当代码更改与最新提交密切相关或代码更改最小时,可以修改提交(不推荐)。与cautio一起使用

    1. Develop new code

    2. $git add

    3. $git commit --amend

    4. $git push -f origin Development

    添加远程源

    # 前提:本地仓库已经创建且初始化完毕(代码已经提交到本地版本库)

    # 本机命令,添加远程源:git remote add remote_name(自己定制名字) ssh@*.git
       采用ssh协议的remote源
    3)采用 https协议 或 ssh协议 与远程git仓库通信提交代码(一般都是项目负责人完成)
      i) https协议方式,无需配置,但是每次提交都有验证管理员账号密码
      >: git remote add origin https://gitee.com/doctor_owen/luffy.git  # 配置远程源
      >: git push -u origin master  # 提交本地仓库到远程源

      ii)ssh协议,需要配置,配置完成之后就可以正常提交代码
      >: git remote add origin git@gitee.com:doctor_owen/luffy.git  # 配置远程源
      >: git push -u origin master  # 提交本地仓库到远程源

      iii)查看源及源链接信息
      >: git remote
      >: git remote -v

      iv)删除源链接
      >: git remote remove 源名字
       
       # 注:origin远程源的源名,可以自定义;master是分支名,是默认的主分支

    img

    img

    commit 书写规范

    规范的作用

    大多数情况下,看提交历史的人跟提交代码的人都不是同一个人,当别人阅读你的提交历史时,他很可能是不知道具体代码细节的,你如何在最短的时间内让他一眼知道每次提交的意义:

    • 每次提交影响的具体范围?

    • 这个bug在哪次提交中被修复了?

    • 这个新功能是在哪次提交中增加的?

    • 修改是否向下兼容?

    • 是否回滚了代码?

    • 是否只是修改了文档、调整了代码格式?

    • 是否修改了测试、是否进行了重构?

    • 是否对代码进行了性能优化?

    提交消息格式

    每个提交消息都由一个标题、一个正文和一个页脚组成。而标题又具有特殊格式,包括修改类型、影响范围和内容主题:

    修改类型(影响范围): 标题
    <--空行-->
    [正文]
    <--空行-->
    [页脚]

    标题<描述><修改-添加-更新-删除>

    修改类型

    每个类型值都表示了不同的含义,类型值必须是以下的其中一个:

    • feat:提交新功能

    • fix:修复了bug

    • docs:只修改了文档

    • style:调整代码格式,未修改代码逻辑(比如修改空格、格式化、缺少分号等)

    • refactor:代码重构,既没修复bug也没有添加新功能

    • perf:性能优化,提高性能的代码更改

    • test:添加或修改代码测试

    • chore:对构建流程或辅助工具和依赖库(如文档生成等)的更改

     

  • 相关阅读:
    英文半字节压缩编码技术
    博弈翻硬币游戏
    POJ 2015 Permutation Code
    8051、ARM和DSP指令周期的测试与分析
    Huffman编码
    CentOS 命令提示符颜色及样式详解
    JAVA程序员面试32问
    面向抽象编程:接口和抽象类
    初学实用:实例讲解Java中的接口的作用
    C#和Java的区别
  • 原文地址:https://www.cnblogs.com/Gaimo/p/14700325.html
Copyright © 2011-2022 走看看