(1) 创建工作目录,创建并切换本地的master分支,然后检出远程的master分支
(20160104:注意,现在要用https,否则无法取代码)
(20160104:如果嫌麻烦可以直接去github搜索别人的镜像,虽然很可能不是最新的
platform_packages_apps gallery
)
(2) 切换到工作目录(除git clone外大多数git命令都必须在工作目录下执行)
$ ls
(3) 查看本地和远程分支。在没有创建新分支的情况下,本地和远程分支的名称是相同的。可以看到本地和远程各有一个叫master的分支。这里没必要用git branch XXX来创建分支,因为我无法提交代码到远程。
(注意:这里如果不执行git pull,如果有人更改了远程的分支,可能看不到改动,所以最好在git branch -r之前执行git pull——猜测是这样)
$ 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并没有创建分支,而是直接切换回去。
* 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://
(20160104注:当然这里可以直接用android.googlesource.com去取,不一定要用xml文件里写的那个android-review.googlesource.com域名,例如这样取Gallery2的代码:
git clone https://android.googlesource.com/platform/packages/apps/Gallery2
如果嫌麻烦可以直接去github搜索别人的镜像,虽然很可能不是最新的
platform_packages_apps gallery
)
(6) 获取指定系统版本的app源代码。先
$ 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) 废弃分支上的修改。由于代码不会去提交,所以对代码作出的修改可以安全地丢弃,例如不小心删除了某个文件(但新增的文件不会被删除)
(20150815:请慎用git checkout -f,会删除所有修改过的文件,除非是新增的)
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.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
(20161016)
在执行ssh-add时报错
sh: __git_ps1: command not found
解决办法:
参考:https://segmentfault.com/q/1010000005952497/a-1020000005952506
-------------分割线开始-----------------
在stackoverflow上找到灵感,就去gitbash的安装目录\Git\etc搜寻了一番,找到了如下文件:
bash.bashr
其中有这么一行
# Set a default prompt of: user@host, MSYSTEM variable, and current_directory
# PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n\$ '
我把PS1前面的#去掉,然后在输入sh,就没有报错了
-------------分割线结束-----------------
对于xp来说,这个文件可能是在
D:\Program Files\Git\etc\bash.bashrc
如果解除注释,会导致mingw的提示符不显示分支名,
所以最好在执行完ssh-add后重新注释掉PS1
另外win7的路径为
C:\Users\Administrator\.ssh
可以通过执行(cd ~/.ssh;pwd)命令查看目录名
若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:
ssh-agent bash
更多关于ssh-agent的细节,可以用 man ssh-agent 来查看
* 提交代码
(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
(20150921)
如果有多个公钥(.pub文件)
可以这样配置,创建一个config文件在~/.ssh/目录下(命令行为touch ~/.ssh/config),然后修改内容为如下类似:
HostName github.com
User git
IdentityFile /c/Users/zhong/.ssh/id_rsa
Host 192.168.1.2
HostName 192.168.1.2
User git
IdentityFile /c/Users/zhong/.ssh/id_rsa_gitlab
这样当访问不同域名时使用不同的公钥(测试命令为ssh -T git@github.com)
参考:
http://www.111cn.net/sys/linux/71236.htm
(20161016)修改~/.ssh/config后执行git命令出现这样的错误
/c/Documents and Settings/Administrator/.ssh/config line 4: garbage at end of line; "and".
解决方法:用双引号括住带有空格的路径(在xp下测试)
例如:
Host github.com
HostName github.com
User git
IdentityFile "/c/Documents and Settings/Administrator/.ssh/id_rsa"
(20160116)参考这篇(有些地方可能不对)
Linux下Git和GitHub使用方法总结
http://www.linuxidc.com/Linux/2014-03/97821.htm
1 Linux下Git和GitHub环境的搭建
第一步: 安装Git,使用命令sudo apt-get install git
第二步: 创建GitHub帐号
第三步: 生成ssh key,使用命令ssh-keygen -t rsa -C "your_email@youremail.com",your_email是你的email
第四步: 回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。
第五步: 测试ssh key是否成功,使用命令ssh -T git@github.com,如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
第六步: 配置Git的配置文件,username和email
git config --global user.name "your name" //配置用户名
git config --global user.email "your email" //配置email
2 利用Git从本地上传到GitHub
第一步: 进入要所要上传文件的目录输入命令 git init
第二步: 创建一个本地仓库origin,使用命令 git remote add origin git@github.com:yourName/yourRepo.git
youname是你的GitHub的用户名,yourRepo是你要上传到GitHub的仓库
第三步: 比如你要添加一个文件xxx到本地仓库,使用命令 git add xxx,可以使用git add .自动判断添加哪些文件
然后把这个添加提交到本地的仓库,使用命令 git commit -m 说明这次的提交
最后把本地仓库origin提交到远程的GitHub仓库,使用命令 git push origin master
3 从GitHub克隆项目到本地
第一步: 到GitHub的某个仓库,然后复制右边的有个"HTTPS clone url"
第二步: 回到要存放的目录下,使用命令 "git clone https://github.com/xxxx/xxx.git",红色的url只是一个例子
第三步: 如果本地的版本不是最新的,可以使用命令 git fetch origin,origin是本地仓库
第四步: 把更新的内容合并到本地分支,可以使用命令 git merge origin/master
如果你不想手动去合并,那么你可以使用: git pull <本地仓库> master // 这个命令可以拉去最新版本并自动合并
4 GitHub的分支管理
创建
1 创建一个本地分支: git branch <新分支名字>
2 将本地分支同步到GitHub上面: git push <本地仓库名> <新分支名>
3 切换到新建立的分支: git checkout <新分支名>
4 为你的分支加入一个新的远程端: git remote add <远程端名字> <地址>
5 查看当前仓库有几个分支: git branch
删除
1 从本地删除一个分支: git branch -d <分支名称>
2 同步到GitHub上面删除这个分支: git push <本地仓库名> :<GitHub端分支>
5 常见错误
1 如果出现报错为ERROR: Repository not found.fatal: The remote end hung up unexpectedly则代表你的 origin 的url 链接有误,可能是创建错误,也可能是这个 git@github.com:xxx/new-project.git url 指定不正确。重新创建。
(20160201) 切换到标签分支
> git tag -l
> git checkout tags/v1.5.0
(20160607)创建标签
切换到当前代码,然后执行
> git tag v1.1
提交(一定要显式通过--tags提交)
git push origin –tags
参考:
http://blog.csdn.net/wangjia55/article/details/8793577
(20160512)参考这篇
一些命令可以参考这里
http://geek.csdn.net/news/detail/72807
git add <filename||path> 【将新文件加入版本控制,Git会对目标文件进行跟踪,纳入版本控制管理。(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)】
git add . 【将当前目录所有文件加入到版本控制】
git commit -m 'commit comment' 【提交变动,将修改的文件转移到暂存区】
git commit -a 'commit comment' 【将add和commit操作合并】
git commit --amend 【重新commit,将之前commit合并为一个(add上次commit漏掉的文件或者重写comment)】
git clone source. zhouliwei.com/app/zhouliwei.git 【本地仓库clone】
git clone git+ssh://gitusername@192.168.0.1/zhouliwei.git 【远程仓库clone(ssh协议)】
git clone http://gitusername@source.zhouliwei.com/app/ zhouliwei.git 【远程仓库clone(http协议)】
git clone -l /home/zhouliwei/test 【拷贝本地资源库到当前目录】
git clone -b 分支名 http://gitusername@source. zhouliwei.com/app/test.git 【clone指定分支(类似checkout)】
git clone -s 远程地址 【作为共享仓库】
git log 【显示所有历史提交日志,最近的在第一行】
git log -1 【显示最近一行】
git log --stat 【显示提交日志及相关变动文件,增改行统计】
git log -p -1 【详细显示每次提交的内容差异】
git log -p -m
git clean --df 【是从工作目录中移除没有track的文件】
git rm –cached <filename||path> 【将文件或者路径从远程reposity、本地暂存域中删除,在本地工作空间中保留,主要针对和项目本身无关的不小心提交到服务器的文件】
vim filename 【查看、编辑资源文件】
git branch 【列出本地所有分支(已检出)】
git branch -a 【列出本地+远程所有分支】
git branch -v 【可以看见每一个分支的最后一次提交】
git branch -av
git branch -r 【列出所有原创分支(origin/.)】
git branch branchname 【创建一个新分支】
git branch -d 分支名 【删除一个分支】
git branch -m oldbranch newbranch 【本地分支改名】
git branch --contains 字符串 【显示包含目标字符串的分支】
git branch --merged 【显示所有已合并到当前分支的分支】
git branch --no-merged 【显示所有未合并到当前分支的分支】
git branch --set-upstream 分支名 origin/分支名 【本地分支关联到远程路径】
git checkout branchname 【切换到新分支】
git checkout -b branchname 【创建并切换到新的分支,如果本地已经有此分支则使用上个命令】
git checkout -b branchname origin/branchname 【在本地创建新分支,从远程拉取新分支代码】
git checkout filename 【替换本地改动,会从服务器下载最新的文件(HEAD 中最新的内容)覆盖工作目录中的文件(add、commit的文件不受影响),次这个操作是不可逆】
git merge branchname || origin/branchname 【合并目标分支到当前分支,合并之后会生成一个新的快照对象】
git reset --hard HEAD 【将当前版本重置为HEAD(通常用于merge失败回退)】
git fetch origin 【1.从服务器拉取最新版本】
git reset --hard origin/master 【2.将你本地主分支指向到远程分支】
git fetch --all 【 从远处资源库拉取所有分支(merge之后才会更新本地分支),可以进行diff、log
git fetch origin 【将从远程拉取上次克隆后的master分支所有变化,即获取master分支最新代码】
git fetch origin branchname1 【1. <远程主机名> <分支名> 设置当前的fetch_head为分支branchname(fetch_head为每个分支在服务器上的最新状态)】
git fetch origin branchname1: branchname2 【2. 拉取远程branchname1到本地新分支branchname2(branchname2是一个临时分支) 】
git fetch diff branchname2 【3. 将当前分支和新建的临时分支branchname2进行比较】
git fetch merge branchname2 【 4. 将当前分支和新建的临时分支branchname2进行合并,此时branchname1为最新代码】
git fetch -d branchname2 【5.删除临时分支branchname2】
git pull == git fetch + merge 【从远程拉取最新版本,合并】
git pull origin branchname1 【拉取并合并branchname1】
git pull <远程主机名> <远程分支名>:<本地分支名>
git push <远程主机名> <本地分支名>:<远程分支名> 【将本地分支推送到远程分支】
1) git push origin <本地分支名> 【远程分支名为空,将本地分支推送到远程与其有对映关系的分支】
2) git push origin :<远程分支名> 【本地分支名为空,将本地空分支推送到远程分支,即删除远程分支】
3) git push origin 【将本地当前分支推送到远程与其有对映关系的分支】
git remote 【列出远程所有alias别名,自己权限范围内的远程reposity】
git remote -v 【可以看见每一个别名对应的实际url】
git remote add [alias] [url] 【给远程url添加别名||把url添加为远程仓库】
git remote add myRepo /home/zhouliwei/test.git 【添加本地仓库作为远程仓库,共享目录】
git remote rm [alias] 【删除一个别名】
git remote rename [old-alias] [new-alias] 【重命名】
git remote set-url [alias] [url] 【更新url. 可以加上—push和fetch参数,为同一个别名set不同的存取地址. 】
git remote add origin <server> 【将本地仓库连接到远程仓库 git remote add origin http://gitusername@source.zhouliwei.com/app/test.git 然后可以通过git push origin branchname将branchname推送到相应远程分支;创建远程仓库】
git remote show origin 【显示远程信息】
git init
git add .
git commit –m ‘initial commit’
git remote add origin http://gitusername@source.zhouliwei.com/app/test.git
git push orgin master
相关推荐
微信小程序学习用demo:git-book(源代码+截图)微信小程序学习用demo:git-book(源代码+截图)微信小程序学习用demo:git-book(源代码+截图)微信小程序学习用demo:git-book(源代码+截图)微信小程序学习用demo:git-...
一款能在Android安卓手机使用git客户端应用APP,支持创建本地仓库,支持自定义手机本地仓库目录,支持远程仓库克隆到手机储存,支持提交并推送到远程仓库。
git下载代码方便,我一般用git命令直接下载 1.cd 代码目录 2.git 代码地址 3.git clone 4.代码下载完成
git下载,用于git的下载,提交代码,android使用方便,
源于android开源项目, 网络摄像头源代码
git下载源码的网址变成了 https://android.googlesource.com 之前的网址作废了 是不可用的:android.git.kernel.org 2013年9月验证按照附件的方法是可行的。
Git源代码管理规范1
A Git client for Android. This project is no longer being maintained. Further development on this app is now being done in the MGit project. Please submit all PRs and issues there. Notes All ...
该教程指出了Androidstudio如何将源代码上传到Gitblit的详细步骤
$ git clone https://github.com/tzutalin/dlib-android-app.git Features Support HOG detector HOG Face detection Facial Landmark/Expression Demo Build Android app Open Android studio to ...
Git源代码管理工具,可以自动从网站下载源代码,并能够进行源代码管理,包括版本控制等,非常不错的工具
Moodle 从 Git 上获得源代码 的方法 OSSEZ
git linux源代码
VSS代码仓库转换为GIT代码仓库工具源代码
基于WebGit 以多功能分布式源代码控制系统。干净直观的用户界面,易于理解 git。在 node.js 和 git 支持的任何平台上运行
Git和Repo扫盲——如何取得Android源代码 - William Hua的Blog
android sdk 下载没有包含 API 源代码,在eclipse中不能查看 android API 中基本类的源代码,这个android-src.jar 就是git最新的android 源代码后 打包而成,可以导入eclipse中直接使用。 (2011年二月15日)
可以方便的存储编程过程中产生的代码,并且记录版本。并可以轻松的产生分支,进行代码的整合与存储。 安装过程 1)解压 2)进入目录 3)打开终端运行./configure 4)运行make 5)运行make install 即可完成安装
Linux内核开发:使用Git管理源代码Git 是 Linux Torvalds 为了帮助管理 Linux:registered: 内核开发而开发的一个开放源码的版本控制软件。我们可以自己下载这个软件用于对内核的 hack 分析,或者用来管理自己的软件...
windows环境下 用git下载android源码