目录
git 配置
1、设置Git的 user name和email:
$ git config --global user.name "xxx"
$ git config --global user.email "xxx@xxx.com"
2、生成秘钥
ssh-keygen -t rsa -C “xxx@xxx.com”
这样在~/.ssh 下会有对应的公钥与秘钥文件,生成过程密码可设置可不设置。
3、在gerrit 中添加Add SSH Public Key ,只需将~/.ssh/id_rsa.pub 内容复制过去。
批量操作git 仓库
~/mtk-p-repo/repo/repo forall -c "git checkout -b test; git branch -D sprdp_W19.03.4_PreResearch origin/sprdp_W19.03.4_PreResearch; git add .; git commit -m 'T'; git checkout -b sprdp_W19.03.4_PreResearch origin/sprdp_W19.03.4_PreResearch; git branch -D test"
更新一个已经修改的git 库
repo sync --force-sync AA/android/kernel/msm-4.9
应用patch
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am --signoff < newpatch.patch
打补丁(不保留msg) patch -p1 < PATCH
gerrit 上提交没有合入代码拉下来
id就是gerrit 网址链接里的id
http://code.xxxxxxxx.com/#/c/1086216/
$ git ls-remote origin 'refs/changes/*/1086216/*'
$ git pull origin refs/changes/16/1086216/1
$ git rebase
下面也可以试试:
$ssh -p 29418 xxxx@gerrit.xxxx.com gerrit query --current-patch-set change:xxxxxxxxxx | sed 's/\s*//g' | grep 'ref:ref' | cut -c5-
$refs/changes/????
$git fetch ssh://xxxx@gerrit.xxxx.com:29418/SDS/ceph refs/changes/???? && git cherry-pick FETCH_HEAD;
git 仓库下载与删除
根据.repo/manifests/*.xml 文件下载git 库
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest>
3 <remote fetch="ssh://10.250.100.15:22218/androido" name="origin" />
4 <default remote="origin" revision="androido_int"/>
5
6 <remote fetch="ssh://10.250.100.15:29338/APK/" name="apk" />
7 <project name="PffectPartner" remote="apk" revision="PffectPartner_int" path="vendor/modules/PffectPartner" />
<project name="device/asus/fugu" />
10 <project name="device/asus/fugu-kernel" />
11 <project name="device/common" />
代码下载:
下载 device/asus/fugu 这个git
git clone ssh://10.250.100.15:22218/androido/device/asus/fugu
下载PffectPartner 这个git 库
git clone ssh://10.250.100.15:29338/APK/PffectPartner
当那个git 库切换分支冲突时,只能删除 .repo/projects/下对应的*.git ,从新下载
远程分支与本地分支
https://blog.youkuaiyun.com/nnuan/article/details/108037097
git中origin master和origin/master的区别
http://www.qiutianaimeili.com/html/page/2021/01/2040tt1h25qsfa.html
git pull --rebase
https://blog.youkuaiyun.com/weixin_42082222/article/details/84843905
成功解决git rebase问题:First, rewinding head to replay your work on top of it...
意思是说,当前分支的当前节点与远程分支的节点不匹配,需要重置到远程分支的节点
用下面的命令可以解决:
git fetch origin; git reset --hard origin/<branch>
git branch --set-upstream-to=origin/<branch> <branch> // 本地关联到远程仓库
Git 的 “master”和 远程仓库名字 “origin”含义
Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init命令默认创建它,并且大多数人都懒得去改动它。
远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样。
origin”是当你运行git clone时默认的远程仓库名字。 如果你运行 git clone -o booyah,那么你默认的远程分支名字将会是 booyah/master。
git出现Your branch and 'origin/master' have diverged解决方法
如果不需要保留本地的修改,只要执行下面两步:
git fetch origin
git reset --hard origin/master
当我们在本地提交到远程仓库的时候,如果遇到上述问题,我们可以首先使用如下命令:
git rebase origin/master
然后使用
git pull --rebase
最后使用
git push origin master
把内容提交到远程仓库上