(1) 创建工作目录,创建并切换本地的master分支,然后检出远程的master分支

写道 $ git clone http://android.googlesource.com/platform/manifest.git

(2) 切换到工作目录(除git clone外大多数git命令都必须在工作目录下执行)

写道 $ cd manifest
$ ls

(3) 查看本地和远程分支。在没有创建新分支的情况下,本地和远程分支的名称是相同的。可以看到本地和远程各有一个叫master的分支。这里没必要用git branch XXX来创建分支,因为我无法提交代码到远程。

写道 $ git branch
$ git branch -r
$ git branch | grep master
* master
$ git branch -r | grep master
origin/HEAD -> origin/master
origin/master

(4) 切换分支(是git checkout <分支名>而非git branch <分支名>)。当本地的分支不存在时,git checkout <分支名>实际上隐式地创建分支。

例如,虽然本地没有android-1.6_r1分支,但执行完检出后android-1.6_r1就被自动创建了。因为本地已经存在master分支,所以执行git checkout master并没有创建分支,而是直接切换回去。

写道 $ git branch
* master
$ git checkout -f android-1.6_r1
Branch android-1.6_r1 set up to track remote branch android-1.6_r1 from origin.
Switched to a new branch 'android-1.6_r1'
$ git branch
* android-1.6_r1
master
$ git checkout master
$ git branch
android-1.6_r1
* master

(5) 获取远程git的路径

先用git checkout切换到platform/manifest的某个系统版本的分支。

然后打开manifest/default.xml,看到这一行

<project path="ndk" name="platform/ndk" />

就是说ndk的git clone路径为

http://android-review.googlesource.com/platform/ndk.git

方便起见这里使用http://而非https://

(6) 获取指定系统版本的app源代码。先

写道 $ git clone http://android.googlesource.com/platform/manifest.git
$ cd manifest/
$ git branch -r
origin/HEAD -> origin/master
origin/android-1.6_r1
origin/android-1.6_r1.1
origin/android-1.6_r1.2
origin/android-1.6_r1.3
origin/android-1.6_r1.4
origin/android-1.6_r1.5
origin/android-1.6_r2
origin/android-2.0.1_r1
origin/android-2.0_r1
origin/android-2.1_r1
origin/android-2.1_r2
origin/android-2.1_r2.1p
origin/android-2.1_r2.1p2
origin/android-2.1_r2.1s
origin/android-2.2.1_r1
origin/android-2.2.1_r2
origin/android-2.2.2_r1
origin/android-2.2.3_r1
origin/android-2.2.3_r2
origin/android-2.2.3_r2.1
origin/android-2.2_r1
origin/android-2.2_r1.1
origin/android-2.2_r1.2
origin/android-2.2_r1.3
origin/android-2.3.1_r1
origin/android-2.3.2_r1
origin/android-2.3.3_r1
origin/android-2.3.3_r1.1
origin/android-2.3.4_r0.9
origin/android-2.3.4_r1
origin/android-2.3.5_r1
origin/android-2.3.6_r0.9
origin/android-2.3.6_r1
origin/android-2.3.7_r1
origin/android-2.3_r1
origin/android-4.0.1_r1
origin/android-4.0.1_r1.1
origin/android-4.0.1_r1.2
origin/android-4.0.2_r1
origin/android-4.0.3_r1
origin/android-4.0.3_r1.1
origin/android-4.0.4_r1
origin/android-4.0.4_r1.1
origin/android-4.0.4_r1.2
origin/android-cts-2.2_r8
origin/android-cts-2.3_r10
origin/android-cts-2.3_r11
origin/android-cts-2.3_r12
origin/android-cts-4.0.3_r1
origin/android-cts-4.0.3_r2
origin/android-cts-4.0_r1
origin/android-cts-verifier-4.0.3_r1
origin/android-cts-verifier-4.0_r1
origin/android-sdk-4.0.3-tools_r1
origin/android-sdk-4.0.3_r1
origin/android-sdk-adt_r16.0.1
origin/froyo
origin/gingerbread
origin/gingerbread-release
origin/ics-mr0
origin/ics-mr1
origin/master
origin/tradefed
$ git checkout android-2.2_r1.3
$ ls
default.xml
$ notepad default.xml
(看到这么一行
<project path="packages/apps/AlarmClock" name="platform/packages/apps/AlarmClock" />

$ cd ..
$ git clone http://android-review.googlesource.com/platform/packages/apps/AlarmClock.git
$ cd AlarmClock/
$ git branch -r
origin/HEAD -> origin/master
origin/donut-release
origin/donut-release2
origin/eclair-passion-release
origin/eclair-release
origin/eclair-sholes-release
origin/eclair-sholes-release2
origin/froyo
origin/froyo-release
origin/master
(因为Android的系统代号是按英文字母排序的,所以froyo-release是最新的发布版本)

(7) 废弃分支上的修改。由于代码不会去提交,所以对代码作出的修改可以安全地丢弃,例如不小心删除了某个文件(但新增的文件不会被删除)

写道 $ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml default.xml
$ rm default.xml
$ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml
$ git checkout -f
$ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml default.xml

(8) 一些有用的链接

* Downloading the Source Tree

http://source.android.com/source/downloading.html

* Android On Github

https://github.com/android

* CyanogenMod

https://github.com/CyanogenMod

20120717补:

官方的仓库列表(网页版):

https://android.googlesource.com/?format=HTML

20130731补:

一些Java API包的源码位置:

(package java.lang.*)

platform_libcore(原为platform_dalvik子目录)

https://github.com/CyanogenMod/android_libcore/tree/gingerbread/luni/src/main/java/java/lang

(package android.*)

platform_frameworks_base

https://github.com/android/platform_frameworks_base/tree/master/core/java

(20131120)

android开源源码树中值得参考的界面/代码的位置(引用自code.google.com/p/kidsbbs2/)

volley: android.googlesource.com/platform/frameworks/volley

chips: android.googlesource.com/platform/frameworks/ex

photoviewer: android.googlesource.com/platform/frameworks/opt

(20141110)

Windows命令行创建ssh key(用于git clone git@github.com:xxx/xxx.git和提交私人仓库代码)

参考:

https://help.github.com/

https://help.github.com/articles/generating-ssh-keys/

https://help.github.com/articles/keeping-your-ssh-keys-and-application-access-tokens-safe/

https://help.github.com/articles/caching-your-github-password-in-git/

http://www.cnblogs.com/sheldonxu/archive/2012/09/17/2688281.html

环境:

Windows XP

Git-1.9.2-preview20140411(msysgit最新版http://msysgit.github.io/)

写道 $ git config --global user.name <github注册用户名>
$ git config --global user.email <github注册邮箱名>
$ ls -al ~/.ssh
$ ssh-keygen -t rsa -C <github注册邮箱名>
(提示save the key时,直接回车(使用默认路径保存钥匙),然后输入github注册密码(没有回响显示,会提示输入两次))
$ ssh-agent -s(官方建议,不过有问题, 20150605:应使用eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa(失败,改用ssh-agent bash)
$ ssh-agent bash
bash-3.1$ ssh-add ~/.ssh/id_rsa(成功, 2015年6月5日:后来发现仍然会失败
(到了这里需要手工把C:\Documents and Settings\Administrator\.ssh的id_rsa.pub文件内容粘贴到github网站->设置->SSH Keys (https://github.com/settings/ssh,点击Add SSH Key按钮),标题可以任意指定
$ ssh -T git@github.com(测试,只要显示authenticated就表示成功,不要理会shell access警告)
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
$ git clone git@github.com:xxx/xxx.git(在网页上创建github代码库,然后使用右下角的SSH clone URL克隆代码)

(20150605)

应使用eval `ssh-agent -s`启动授权代理进程

参考:

http://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent

另外win7的路径为

C:\Users\Administrator\.ssh

可以通过执行(cd ~/.ssh;pwd)命令查看目录名

写道 执行ssh-add时出现Could not open a connection to your authentication agent

若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:

  ssh-agent bash


更多关于ssh-agent的细节,可以用 man ssh-agent 来查看

* 提交代码

cd xxx (切换到工作目录)

git add . (注意后面的是一个点)(20150323:注意可以加-A参数,git add -A .表示本地删除的内容也同步到远程,使得远程的文件也被删除)

git commit -m 'adding xxx' (后面是日志内容)

git push origin master (提交到origin节点的master分支,官方的做法是git push -r origin master)

(20150323)

京东云的git教程(在创建应用时会显示类似的链接,针对京东云的git代码库,部分也适用于github)

http://jae.jd.com/help/create_app.html?targ=259

见下面的faq

http://learn.zone.jd.com/cmsindex/appdetail.htm?id=97002

更多相关文章

  1. android工程创建的jar包使用proguard进行混淆
  2. Android(安卓)进阶——Framework 核心四大组件之跨进程共享组件C
  3. Android(安卓)双开沙箱 VirtualApp 源码分析(四)启动插件 Service
  4. Android(安卓)通过配置 productFlavors 实现多版本差异化打包
  5. Android中对/data/data//files下文件的读写操作
  6. android SDK的常用命令工具和资源
  7. 三.如何创建窗口模式的Activity
  8. Handler:使用方式
  9. 查看 android 现在有什么分支

随机推荐

  1. 赛灵思FPGA助力解决困扰7年的27皇后难题
  2. 借助NOR Flash实现UltraScale FPGA后配置
  3. 阿里1688实时数据工程实践
  4. JavaWeb系统自学,全栈学习路线图,百度网盘
  5. flex容器中的四个属性
  6. 函数的声明和定义
  7. 选择器优先级、模块化样式组件、伪类选择
  8. [go-linq]-Go的.NET LINQ式查询方法
  9. 携程实时智能检测平台实践
  10. 最新整理linux云计算课程大纲笔记