Git 经验

Git 仓库

一.Git 基本命令

1. git branch -av 查看本地分支

2. git branch 分支名   创建分支

3. git checkout 分支名  切换分支

4. git status   查看修改过的文件

5. git diff        比较修改点差异

6. git add .     表示添加新文件和编辑过的文件==不包括删除的文件==到暂存区 

7. git add -A .     表示添加所有内容到暂存区

8. git commit -m "注释"   暂存区内容添加到本地仓库中。

9. git push       将本地仓库版本上传到远程并合并。
   格式:git push <远程主机名> <本地分支名>:<远程分支名>
   
10. git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;

11.git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);

二. 提交步骤

#准备工作
1. git checkout master(845_LA2.0.1_BP)  切换到主分支
2. git pull 拉取服务器最新代码(提交代码前一定要先更新本地代码)
   git pull <远程主机名> <远程分支名>:<本地分支名> 
   git pull orgin master (追踪关系)
3. git checkout local 切换到本地分支

#切换到local分支后, 就是修改代码#
1. git status 查看本地库修改过的文件
2. git diff 查看详细的修改记录
3. git add 提交文件 
(git add . 全部提交-前提是改动的文件都是需要提交的)
4. git commit -m "提交注释"   修改完了, 就正常提交代码
5. 如果有多次local分支的提交,就合并,只有一次可以不合并(合并成一个commit 可以修改commit描述)
git rebase -i HEAD~2  //合并提交 --- 2表示合并两个

#提交代码
将master内容合并到local
1.首先切换到主分支,确保master分支代码更新到最新的
  git checkout master
  git pull 
2.合并代码
  git checkout local  //切回工作分支
  git rebase master---->解决冲突--->git rebase --continue
2.提交代码
  git checkout master//切换到主分支提交代码
  git merge local //将local分支合并到master
  git push

在本地分支提交代码
git push <远程主机名> <本地分支名>:<远程分支名>
例:git push origin release:refs/for/845_LA2.0.1_BP
git branch -r 查看远程分支名

尽量不在本地分支提交代码:
当同时开发多个模块功能时,需要创建不同的分支。只在master push代码会好用一点。

三.已经commit并push了,怎么继续提交到之前的commit

案例:本地提交改动后,再次修改代码,执行git commit -m 命令后,默认会创建新的commit信息及hash值,这样提交会出现两笔提交记录。
使用git commit --amend 是在已有的commit上改动。

修改好代码以后,操作如下几个步骤
1. git add        提交修改的文件

2. git commit --amend进入vim编辑器

3. 输入i编辑提交信息(可以不做修改)

4. 按ESC 输入:wq 保存退出,这个时候已经将你修改的内容合并到上一笔提交了

5. 强迫push:命令跟上面一样,git push origin --force 本地分支名:远程分支名

Repo仓库

环境搭建:

1.sudo apt-get install git  下载git
2.git config --global user.name "name"         配置Git
  git config --global user.email "name@xxx.com"
3.ssh-keygen -C 'you email name@xxx.com' -t rsa 创建密钥文件(git是通过ssh去链接资源库)
4.cd ~/.ssh 
  cat id_rsa.pub 将公钥复制到gerrit服务器SSH Public keys 
5.ssh -p port xxx.xxx.xxx.xxx  测试连接是否畅通(server host key 会显示port 和 ip)

成功后下一步

1.mkdir ~/.bin 创建不存在的bin文件夹
2.PATH=~/.bin:$PATH 将bin目录添加到系统环境变量
3.curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
  chmod +x repo
  或从服务器的tools去获取

拉取代码

1. mkdir work 创建工作目录
2. repo init -u ssh://xxx.xxx.xxx.xxx/manifest.git  克隆manifest仓库 
3. repo init -m xxx.xml 切换分支 服务器的分支文件在./repo/manifests中
4. repo sync
5. 查看当前所在服务器分支  ll .repo/manifest.xml
6. 查看所有分支   repo branches

一.android源码git介绍

android用repo管理,repo其实就是为了更好的管理多个git子项目,也就是说android源码中有多个git项目,每个含有.git的目录就是一个git子项目。

准备工作:
要切换到创建的本地分支上进行开发,否则push失败
repo start 本地分支 --all 在所有git仓创建本地分支

2.对某一个git子项目操作

如sensor_see 就是android源码中的一个git子项目

1. cd vendor/qcom/proprietary/sensors-see

2. repo init –m xxxx.xml    切换整个工程分支
    repo sync 
    xxxx.xml 在 .repo/manifests  目录下
    
3. repo sync .    更新同步当前git仓的代码
   repo sync      更新所有git仓同步到最新代码

4. repo start 本地分支 --all  在所有git仓创建本地分支

5. repo abandon branch_name 删除分支

6. cd 到具体路径修改代码   

7. git add xxx(需要提交的文件)

8. git commit -m "提交注释"

9. repo upload .   只上传当前仓库的提交
如果多个仓库有commit,则可以执行repo upload,然后在弹框中去掉需要提交仓库前面的#即可

冲突

一. 与服务器代码冲突
退回到某个提交点

1. git reset --hard commit_ID     ------ 强制回退:忽略本地修改点  慎用
2. git reset  commit_ID              ------ 回退:保留本地修改点
3.如何恢复
   使用git reflog 可以看到reset之前的提交commit log
   git reset commit_id 即可恢复

二. repo init 失败

  “no matching key exchange method found. Their offer: diffie-hellman-group1-sha1”

在.ssh目录下新建config文件

vi  ~/.ssh/config
添加
Host *
KexAlgorithms +diffie-hellman-group1-sha1
此方法只对当前用户生效,使用其他用户是又会报错

或修改/etc/ssh/ssh_config文件,在最末尾加入即可

KexAlgorithms +diffie-hellman-group1-sha1

modified状态:文件已修改,仅仅是修改,并没有进行其它操作。
通过git add可进入暂存(staged)状态,使用git checkout则丢弃修改,返因到unmodify状态。这个checkout很好理解,就是取出库中文件,覆盖当前文件吧。
unstaged:未暂存状态,即最后修改得文件。git add 后会变成staged状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值