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:对构建流程或辅助工具和依赖库(如文档生成等)的更改

 

posted @ 2021-04-25 15:03  游走De提莫  阅读(121)  评论(0编辑  收藏  举报