Android: Git/Gerrit/Repo 的使用 <一>

来源:互联网 发布:弯矩剪力计算软件 编辑:程序博客网 时间:2024/04/29 22:48

    写在前面: 最近被Git的使用, 搞得快要疯掉了, 本来使用git也只是下个代码, 提交个代码之类的简单操作,  话说, 某天, 使用git命令提交了5个代码,  结果冲突了, 捣鼓了半天,  还是给abandon掉了, 心疼啊~~     于是乎, 决心要 搞一搞它了.   本文,  只针对那些和我一样, 使用git作业的且非git研究者的童鞋们, 对于git灰常灰常了解的可以掠过了... 


Git

  • 是一个分布式的代码版本管理工具
  • 是由Linux Torvalds 为了支持Linux内核管理而开发的 (2005年)
  • 安装apt-get install git-core
  • 配置用户信息: git config --global user.name “user name”           邮箱帐号@的前面部分

                                    git config --global user.email “user email”

                                    git config -l                  可查看配置信息

                            <如需要更改配置信息, 可以修改~/.gitconfig文件>

  • 使用流程: (使用git help帮助文档)
  1. git fetch(pull, clone)           ** 从远程git 服务器获取代码,  会建立一个local的git库
  2. 在一个干净的git库下,  coding... coding....coding....
  3. git status                              ** 查看修改状态, 会列出所有的修改的文件
  4. git diff  <filename>              **查看修改的代码
  5. git add filename1 filename2 ........                    ** 将修改的代码保存在cache里,  在.git/index
  6. git commit                            **提交到本地的git库里,  会自动生成一个sha1号
  7. git push                                ** 提交代码到远程git库里
  •  其他的一些常用的git 命令:
  1.  git reset                           ** 回退所有修改到某个点, 不删除本地未提交的修改(读,写 cache里的东西)
  2.  git reset -- myfile.java    ** 回退某个文件
  3.  git reset --hard                ** 回退所有cache里的文件, 并删除本地未提交的修改
  4.  git checkout  <filename>              ** 将修改的代码回退到未修改之前
  5.  git log                               **列出所有的commit历史记录, 
  6.  git log  v2.0..v1.0            **列出所有在v1.0 但不在v2.0里的所有commits
  7. gitk                                     **比较好用的一款git图形界面
  8. git cherry-pick sha1         ** 将sha1的那次提交拿到本地分支来 (多次的cherry-pick 可能会产生冲突, 可根据提示解决冲突后, 继续cherry-pick)
  9. git rebase branch_name                   ** 和cherry-pick 类似, 只是将branch_name的分支一次性拿到本地分支
  • conflict实例讲解:

           conflict:  主分支(main_branch, 记为sha1_parents) 上建立一个本地分支my_branch,  coding后, 使用上述的git命令将代码提交到远程git库(此时的commit-id记为sha1_1), 发现, 此时main_branch已被修改, 因此 会提交失败, 解决冲突的方法是:

                                        首先, git checkout 到sha1_parents上; 其次, 使用git cherry-pick sha1_1; 最后, 使用git rebase main_branch.

Gerrit /Repo 下回分解吧.