Git 使用总结
代码总位置:
电脑磁盘本地<------> Mobaxtrem服务器代码<------> Gerrit代码托管平台
电脑磁盘本地<------> Mobaxtrem服务器代码: 用代码对比工具,把代码同步到服务器上面去
Mobaxtrem服务器代码<------> Gerrit代码托管平台: 使用Git操作啦 git commit 、push什么的
一
Git commit 提交模板:
[CR243] Light color pattern for phone //开发功能名称
Description: Light color pattern for phone //具体描述
Depends-On : 00
Tracking-Id : BJEVN60-31761 //你开发的功能代号
Change-Type : Feature
Domain : HMI
Unit-Test : NA
值得注意的是,每一次提交对应一个Git上面的Commit记录,如果开发中需要依赖同事某一次的提交,你就需要cherry pick同事的那一次提交
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
二
一般Push代码到服务器,服务器一般都会有好几个分支:
比如说60版 61版 思必驰版 Carplay版等等
例如提交到60分支命令:
git push origin HEAD:refs/for/n61-my20-r6.6
git push origin HEAD:refs/for/n61-my20-New-Partition
git push origin HEAD:refs/for/n60-my20-carplay
git push origin HEAD:refs/for/n60-my20-carplay-sibichi
三
建立一个本地磁盘映射
目的:
服务器所有代码或者某一模块代码,就可以下载、保存到电脑磁盘本地
这样好处就是可以随意篡改代码不怕影响到服务器
四
打包最近的一个patch:git format-patch HEAD^
五
服务器 代码拉取步骤
1 配置ssh
2 服务器上添加ssh keys
3 获得HTTP Credentials 本地克隆需要密匙 ssh-keygen -t rsa -C "Yitong.He@harman.com"
4 拉取后本地为空
六 踩坑
假设之前的提交描述不规范需要修改:例如修改commit的名字与邮箱
git rebase -i HEAD~3 前三项
git commit --amend --author="Author Name <email@address.com>"
git rebase --continue
git log
可一项一项改
七 做项目提前准备
做某个项目服务器编译apk前:
1 创建分支
注意看gerrit 先进入对应的库例如:
Repo harman/vendor/harman/gwmbjev/Cluster
名称 看例如: n61-my20-r6.6
git checkout -b <名称> origin/<一样名称> //创建分支
git pull --rebase 更新一下最新代码
如果需要拉取某一次的提交commit:
进入gerrit 要拉取的这次提交页面
点击右上角 Download patch 选择ssh 选择Cherry pick
在服务器Mobaxtrem里面粘贴,完成
八:
在服务器提交代码到代码托管平台步骤:
1 git add .
2 git commit
3 若需修改之前提交:
git commit --amend
4 怎么进入vim模式? 填写你的提交信息
输入q
再输入i 进行vim编辑 粘贴提前准备好的提交文本
保存好退出是 wq
服务器退出vim编辑模式:
ESC :冒号 输入q 空格
代码上传到gerrit以后,如果需要拉到服务器来编译测试
Gerrit右上角 downloadPatch ssh 选择第一个,服务器直接创建新分支,
这样代码就是从gerrit完整拉下来的代码。
5 提交到服务器
git push origin HEAD:refs/for/n61-my20-r6.6
git push origin HEAD:refs/for/n60-my20-carplay
九:
有时候会遇到 pull代码没有问题,但是最后push 不上去,编译不通过的问题
git pull --rebase
十:
拉取代码冲突解决:
1 服务器建立分支
git checkout -b n61 origin/n61-my20-r6.6
2
cherry pick 某一次提交
3
git显示冲突的 文件
使用文本编辑器打开一个个修改,把需要的代码留住、不需要的删除。
冲突修改完后
git add .
git cherry-pick --continue 直接跳转到commit信息页面
然后
i 表示输入input,就是commit提交信息按i
Esc :wq
4 最后
git push origin HEAD:refs/for/n60-my20-carplay
十一:
git branch -d 分支名
git branch -D 分支名 强行删除
十二:
多分支开发想要合并:
(主干线和分支线上同时开发)
先在分支上add. ,commit提交后
再切换到主分支,拉去分支的这一次提交
十三
查看git用户名、密码、邮箱的配置
git config user.name
git config user.password
git config user.email
配置user name和email
git config --global user.name "xxx"
git config --global user.email "xxx"
十四:
git branch 列出本地所有分支
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支
十五:
git commit --amend
新提交时,多注意,可以合两笔为一笔,避免多出现一笔commit
十六:
如果不小心把不需要的文件添加到暂存区,怎么撤回?
比如我不小心把依赖包文件夹node_modules(这个很大而且没必要git管理这份代码)add了,怎么撤回这个文件?
第一种方法:
$ git reset HEAD -- node_modules
注意:双杠--后面有一个空格,后面再跟文件名。
第二种方法:
$ git rm -r --cached node_modules
十九:
git remote 删除已添加的远程仓库地址:
1
查看当前配置的远程仓库地址
git remote -v
2
git remote remove <name> //比如叫一般是origin
3
再执行 git remote -v 查看是否已删除