git 使用技巧

目录

git 配置

批量操作git 仓库

应用patch

gerrit 上提交没有合入代码拉下来

git 仓库下载与删除

远程分支与本地分支


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.csdn.net/nnuan/article/details/108037097

git中origin master和origin/master的区别
http://www.qiutianaimeili.com/html/page/2021/01/2040tt1h25qsfa.html

git pull --rebase
https://blog.csdn.net/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

把内容提交到远程仓库上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值