1.代码下载
以下载0xdroid代码为例:
在当前用户目录,将下列代码保存为gitlab:
#!/bin/sh
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential
zip curl libncurses5-dev zlib1g-dev valgrind sun-java5-jdk
mkdir $HOME/bin
echo "export PATH=$HOME/bin:$PATH">>$HOME/.bashrc
export PATH=$HOME/bin:$PATH
curl http://android.git.kernel.org/repo > $HOME/bin/repo
chmod a+x $HOME/bin/repo
mkdir $HOME/0xdroid
cd $HOME/0xdroid
repo init -u git://gitorious.org/0xdroid/manifest.git
repo sync
完---------------------------
启用控制台:
$cd 包含gitlab文件的目录
$sudo chmod a+x gitlab
输入用户密码
$./gitlab
至此,等待代码下载完毕,中间可能会需要用户输入密码,安装java1.5的时候需要用户自己点确定。等待过程会比较长,完毕后,0xLAB的Android代码就全部下载完毕。
若需要下载别的网站的代码(需该网站提供git下载),可修改gitlab脚本文件,其中0xdroid目录可改为自己的项目名,git地址:git://gitorious.org/0xdroid/manifest.git 可改为提供代码的git网址。(文件后缀需包含.git)
另类下载方法:
直接在你的项目目录敲:
git clone git://gitorious.org/0xdroid/manifest.git
这种方法需先安装git,即:sudo apt-get install git-core
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2.代码更新
$cd 项目所在目录
$repo sync
另类更新方法:
git pull git://gitorious.org/0xdroid/manifest.git
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3.代码管理
<1>.导出文件
项目开发过程中需要多个程序员共同开发,这就需要从服务器上下载代码。
假定服务器ip是:192.168.0.1 用户名:admin
git代码仓库位于/home/admin/0xdroid
假定我们需要修改Setting这个package,可调用(需先安装ssh):
$ git clone admin@192.168.0.1:~/0xdroid/packages/apps/Settings
<2>.查看修改信息
进入本地的setting目录:
$ git whatchanged
获得修改的信息,其信息格式一般为:
Commit 22XXXXXXXXXXXXXXX(一串字符)
……..
Commit 11XXXXXXXXXXXXXXXX
………
如果直接是git diff,那么是与最近的一次commit进行比较,这就是为什么我们可以直接用git diff命令获得我们修改的代码(注意,前提是我们没有commit过)。
如果想知道更多的修改信息,我们需要用到以下命令:
$ git diff <commit>
如上面的信息,如果利用以下命令:
$ git diff 11XXXXXXXXXXXXXXXX
则可以获得与commit 11XXXXXXXXXXXX的不同信息,利用这个信息,我们就可以很容易地知道文件的哪些东西在哪一次被改变过,从而也使我们有目的地去看代码。
<3>提交至本地代码
当程序员觉得自己的代码修改好了,就需要提交至本地的git仓库中。
首先,你可以利用
$ git status
获得当前的git里的信息,它会告知你以上哪些文件修改过,是否添加到本地git仓库,一般刚修改完代码,是没有add(或是update)进去,因此我们需要add进去,命令如下:
$ git add –A
这个命令将全部修改(添加)过的文件add进去,当然你也可以单独add,如:
$git add src/com/android/settings/EthernetSettings.java
此时你虽然将其add进去了,但是你需要注意的是仅仅刷新了git,而没有将你修改的内容添加进去,此时,你紧接着需要commit,将内容commit进去,命令:
$git commit –m <commit>
如可以利用下面的命令
$git commit –m “Enable ehternet proxy”
这样你就将你刚刚add进去的文件进行了一次commit,如果你此时利用$ git status获得信息,你在最上面的一行可以看到你自己的commit
<4>.提交代码至服务器
进行了commit之后,你就可以与远程的工程进行合并了,命令
$ git push admin@192.168.0.1:~/0xdroid/packages/apps/Settings
它会将你修改过的内容与原工程进行合并,并且将你的commit加进去,至此完成了代码的修改和合并。
<5>.代码恢复
刚才我们利用git whatchanged可以得到commit,从而知道修改的信息,那么利用
$git reset <commit>
就可以恢复到你所需要的commit,如:
$git reset 11XXXXXXXXXXXX
就恢复到commit为11XXXXXXXXXXXXXXXXXX的那个修改了。但是我们得知道git reset 默认不修改代码,即commit恢复了,代码并没有改变。
最后可以利用:
$git checkout –f
恢复代码,至此代码可以恢复到最近的commit
因此,如果我们自己没有进行commit的话,直接利用$git checkout –f 就可以恢复到我们下载时的代码,因为那个commit是最近的一次commit。
<6>发布patch
为了得到带commit信息的patch文件,我们在获得patch时可按以下步骤:
-1. 进入到当前目录,改变你的用户名和邮件
$ git config user.name“your name”
$ git config user.email “your email”
-2. 添加并提交你的修改,这个跟上次git简单使用方法一样
$ git add xxx.java
$ git commit -m “what you want to describe”
-3. 获得patch
$ git log (此处是为了获得你提交修改的上一级commit信息,如2xxxxxx)
$ git format-patch 2xxxxxxx (获得带有commit信息的patch文件)
-4. patch文件默认在你当前目录下,可以自行查找并修改文件名。
-5. 将上述patch文件打到自己的目录下
$ git am xxx.patch (这样你的目录下就有了commit信息)
-6. 另:原来打patch使用patch -p1 < xx.patch 较为复杂,其实,在git下有
$ git apply xx.patch (可以打patch,不带commit信息)
再另:上次写的git whatchanged可以直接用git log代替,获得修改信息。