Git常用命令:
配置全局的email和用户名:
git config --global user.email "ansen"
git config --global user.name "tomorrow_p@163.com"
git brach //查看分支情况
git branch -a //查看所有分支
git branch -r //查看远程分支
git branch -v //查看各个分支最后一次提交
git branch -d mybranch // git branch -D mybranch // git branch test caf/test //创建并映射到远程分支
git pull //更新代码,从git服务器更新代码
git push origin master //提交代码
git push caf :test //删除远程分支
git push origin hotfix:hotfix //提交代码到远程分支
git push origin --delete hotfix //删除远程分支
git push caf test //推送远程分支
git clone git://github.com/jquery/jquery.git(从git服务器得到的) //从远程仓库拷贝代码到本地
git status //查看代码修改状态
git stash // 备份当前的工作区内容
git stash list // 显示git栈内的所有备份
git stash clear // 清除git栈
git stash pop //从git栈中读取最近一次保存的内容(取出之后记录就不在list中)
git stash apply //从git栈中读取最近一次保存的内容(取出之后记录就在list中)
git fetch origin master(远程分支名称) //同步服务器代码到本地
git check 分支名 //切换到某个分支
git checkout . // 撤销所有修改
git checkout 文件路径 // 撤销该文件的修改
git checkout -b mybranch // git checkout -b mybranch origin/mybranch //基于 git cherry-pick 提交的哈希码 //合并提交
git reset 98222917718f2c80546b5bbd1718b6446df7b6c7 //回退到98222917718f2c8
git reset --hard 477f4e4adcbcb6afa5f8707a0e6bc6c0e4b92e88 //回退到477f...本地内容也改变
git reset --soft 477f4e4adcbcb6afa5f8707 //回退到某个版本,只回退了commit的信息
git reset . //撤消git add
git reset --hard HEAD 回滚到add之前的状态
git reset --hard HEAD^^ //回滚前两个版本
git reset HEAD^ //撤销最近一次提交(即退回到上一次版本)并本地保留代码
git rebase origin/master //将fetch到的代码合并到当前分支
git rebase --continue //继续rebase
git rebase --abort //终止合并操作,恢复到rebase之前的状态
git revert 4adcbcb //回滚到某次提交
git rm -r res/drawable-xxx/xx/xx.xx //删除提交
git reflog //查看引用日志
git remote -v //查看远程仓库
git remote update //更新远程分支
git remote add temp ../temp/ //添加远程仓库
git rm --cached file1 //删除文件跟踪但不删除文件系统中的文件file1
git log --oneline
git log xxx.java //查看文件的提交log
git stash(保存现在的修改到暂存区) // git merge mybranch (将mybranch合并到当前所在分支) //gitk ./src/com/android/**/MSimCallFeaturesSubSetting.java //查看文件的修改记录
git tag -a v1.4 -m ‘version 1.4′ //创建标签
git format-patch -1 //单次提交
git format-patch -3 // 从master往前3个提交的内容,可修改为你想要的数值
git format-patch –n 07fe //-n指patch数,07fe对应提交的名称,某次提交(含)之前的几次提交
git format-patch -s 4e16 // 某次提交以后的所有patch, --4e16指的是SHA1 ID
git pull --rebase caf v3_msm8976 //减少merge节点
git commit --amend //补充上一次提交的内容
git merge origin/mybranch // Samples:
>>提交操作:
$ git add .
$ git commit -m "clear"
$ git push origin master
>>获取远程分支
先fetch所有远程分支的信息;
远程分支映射到本地命名为local-branchname(和远程分支命名一致).
git checkout -b local-branchname origin/remote_branchname
>>创建本地分支推送到服务器
git branch develop
git push -u origin develop
>>修改完冲突后继续rebase:
git add . //把修改添加进分支
git rebase --continue //继续rebase
>>创建 git 仓库:
mkdir Git_Test
cd Git_Test
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://git.oschina.net/tomorrow_p/Git_Test.git
git push -u origin master
>>已有项目?
cd existing_git_repo
git remote add origin https://git.oschina.net/tomorrow_p/Git_Test.git
git push -u origin master
>>提交模板
1.在根目录建立模板文件: ansen_template
[CAUSE] :
[SOLUTION] :
[REVIEW] : Own
[SIDEEFFECT]: without side effects
[PROJECT] : V8
[CR] : SM-2182
[MODULAR] :
2.设置模板
git config commit.template [模板文件名] //这个命令只能设置当前分支的提交模板
git config --global commit.template [模板文件名] //这个命令能设置全局的提交模板
例如:git config commit.template xxx_template
git config --global commit.template /home/pansen/MSM8976/repo/ansen_template
3.设置文本编辑器
git config --global core.editor [编辑器名字]
例如:git config --global core.editor vi
4.使用模板提交代码
git commit 之后会以设置的编辑器打开模板文件,然后按照格式修改该文件,并保存
git push
git config --list
>>GIT patch
1. 对某次提交生成patch:
git format-patch -1 SHA1-ID
例如: git format-patch -1 9c94cf7f08314a1f5d2b4bb5faaf9d2c2d6b4875
2. 应用patch:
先检查patch文件:# git apply --stat newpatch.patch
检查能否应用成功:# git apply --check newpatch.patch
打补丁:# git am newpatch.patch
最后检查无误:# git push
>>Git flow
master:
是用于保存官方的发布历史(使用版本号为master上的所有提交打TAG)
develop:
是用于集成各种功能的开发分支
feature:
新功能的开发使用独立的分支(基于develop分支)。为了备份或便于团队之间的合作,这种分支也可以被推送到中央仓库。功能开发完后合并(merge)到develop分支。功能开发永远不应该直接牵扯到master。
release:
临近发布是基于develop的分支建立release分支,这个分支只能修复bug或者开发文档和发布相关的工作;之后合并到master分支,用版本号打上标签,该分支上的改动合并到develop分支
hotfix:
发布后维护工作或紧急问题的快速修复,这是唯一可以直接基于master分支创建的分支(以bug描述命名),一旦问题修复,改动应该合并到master和develop分支(master还要使用更新的版本号打TAG)
http://note.youdao.com/share/?id=b1fa57ea7f560cd30fce387efb5da4c6&type=note#/
Repo 常用命令:
Qucii命令:
./makeQucii -t mm +路径名 //单编
./makeQucii -t mm packages/apps/Settings/ //simple
./makeQucii -t qucii3903 //全编
./makeQucii -t update-api
./makeQucii -h //查看编译命令
./makeQucii -t update-api
repo forall -c git pull;./makeQucii -t
>>repo init
Options:
-u:指定一个URL,其连接到一个maniest仓库
-m:在manifest仓库中选择一个xml文件
-b:选择一个maniest仓库中的一个特殊的分支
Example:repo init -u git@server2:/data/git/manifest_msm8939_5.0.git -m manifest.xml
>>repo sync
参照清单文件.repo/manifest.xml克隆并同步版本库.如果某个项目版本库不存在,则相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令:
git remote update 对每一个remote源执行了fetch操作
git rebase origin/branch 针对当前分支的跟踪分支执行rebase操作。
也可以选择克隆其中的一个项目: repo sync platform/build
>>repo start刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件设定分
实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支。
Example:
>>repo branches(查看分支)
repo diff(查看工作区文件差异)
实际是对
git diff 命令的封装
,用于分别显示各个项目工作区下的文件差异。
repo stage(把文件添加到index表中)
实际是对git add --interactive命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。
>>repo prune(删除已经合并分支)
实际上是对git branch –d命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支,用法如下:
repo abandon(删除指定分支)
实际上是对git branch –D 命令的封装,用法如下:
>>repo status(查看文件状态)
实际上是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
$repo/repo status platform/bionic
repo remote(设置远程仓库)
Example:
repo remote add org ssh://172.16.1.31/git_repo
repo push
这是新添加的指令,用于向服务器提交代码,使用方法:
>>repo forall
Options:
-c:后面所带的参数着是shell指令
-p:在shell指令输出之前列出项目名称
-v:列出执行shell指令输出的错误信息
>>repo grep
相当于对git grep 的封装,用于在项目文件中进行内容查找
repo manifest
显示manifest文件内容
Usage:
repo manifest –o android.xml
>>repo version
显示repo的版本号
>>repo upload
repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中。
>>repo download
主要用于代码审核者下载和评估贡献者提交的修订
>>repo selfupdate
用于repo自身的更新
图形工具:SourceTree是用来管理代码分支的。
beyond compare是用来比较代码,解决冲突的。
1 0