git & repo 常用命令

6 篇文章 0 订阅

Git常用命令:

配置全局的email和用户名:

git config --global user.email "ansen"

git config --global user.name "ansen360@126.com"

  • git brach //查看分支情况
  • git branch mybranch //创建分支
  • git branch -a //查看所有分支
  • git branch -r //查看远程分支
  • git branch -v //查看各个分支最后一次提交
  • git branch –merged //查看哪些分支合并入当前分支
  • git branch –no-merged //查看哪些分支未合并入当前分支
  • git branch -d mybranch //删除分支
  • git branch -D mybranch //强制删除分支
  • git branch test caf/test //创建并映射到远程分支
  • git check 分支名 //切换到某个分支
  • git checkout . // 撤销所有修改
  • git checkout 文件路径 // 撤销该文件的修改
  • git checkout -b mybranch //创建并切换分支
  • git checkout -b mybranch origin/mybranch //基于远程分支创建新分支
  • git cherry-pick 提交的哈希码 //合并提交
  • git commit --amend //补充上一次提交的内容
  • git pull //更新代码,从git服务器更新代码
  • git pull --rebase //减少merge节点
  • 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/xx/xx.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 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 origin git://github.com/xxx //添加名称为origin的远程仓库
  • git rm --cached file1 //删除文件跟踪但不删除文件系统中的文件file1
  • git log --oneline
  • git log xxx.java //查看文件的提交log
  • git merge mybranch (将mybranch合并到当前所在分支) //合并分支
  • gitk ./src/com/android/**/MSimCallFeaturesSubSetting.java //查看文件的修改记录
  • git tag //查看版本
  • git tag -r //查看远程版本
  • git tag v1.4 //创建版本
  • git tag -a v1.4 -m ‘version 1.4′ //创建带注释的标签
  • git tag -d v1.4 //删除版本
  • git push origin --tags //上传本地tag到远程仓库
  • 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
  • Samples:

  • 提交操作:

$ git add . 
    $ git commit -m "clear"
    $ git push origin master
  • 获取远程分支
fetch所有远程分支的信息;
    远程分支映射到本地命名为local-branchname(和远程分支命名一致).
    git checkout -b local-branchname origin/remote_branchname
  • git仓库迁移,保存提交记录
project1  project2 为两个git仓库,project1的代码及提交记录合并到project2
    1.进入project2文件夹,project1添加为临时远程分支ansen
    $ git remote  add ansen ../project1/
    2.获取远程分支ansen数据到本地
    $ git fetch ansen
    3.切换到临时分支ansen
    $ git checkout  -b ansen ansen/master
    4.切回project2之前的master分支
    $ git checkout master
    5.将临时新分支合并到master分支:
    $ git merge ansen
    6、删除临时分支:
    $ git branch -d ansen
  • 创建本地分支推送到服务器
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]	(不加SHA1-ID默认是最新那次提交)
    例如: git format-patch -1 9c94cf7f08314a1f5d2b4bb5faaf9d2c2d6b4875

2. 应用patch
    先检查patch文件:# git apply --stat newpatch.patch
    检查能否应用成功:# git apply --check  newpatch.patch
    打补丁:
    # git am newpatch.patch	(am会修改文件并创建提交)
    # git apply newpatch.patch	(apply修改本地文件而不创建提交)
    最后检查无误:
    # git push
  • Git flow
master: 
    是用于保存官方的发布历史(使用版本号为master上的所有提交打TAG)
develop: 
    是用于集成各种功能的开发分支
feature: 
    新功能的开发使用独立的分支(基于develop分支)。为了备份或便于团队之间的合作,这种分支也可以被推送到中央仓库。功能开发完后合并(merge)到develop分支。功能开发永远不应该直接牵扯到master
release: 
    临近发布是基于develop的分支建立release分支,这个分支只能修复bug或者开发文档和发布相关的工作;之后合并到master分支,用版本号打上标签,该分支上的改动合并到develop分支
hotfix: 
    发布后维护工作或紧急问题的快速修复,这是唯一可以直接基于master分支创建的分支(bug描述命名),一旦问题修复,改动应该合并到masterdevelop分支(master还要使用更新的版本号打TAG)

Repo 常用命令:

  • 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是在清单文件设定分
支的基础上创建特性分支

Example
  repo start  stable  --all
>>repo checkout
实际上是对git checkout 命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支。
Example
repo checkout crane-dev
  • 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-indexgit diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
$repo/repo status platform/bionic
repo remote(设置远程仓库)
Example:
repo remote add org ssh://172.16.1.31/git_repo
repo push
repo push org
   这是新添加的指令,用于向服务器提交代码,使用方法:
  • 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自身的更新

  • repo status

repo forall -pc git pull

工具: SourceTree: 管理GIT代码分支的。 beyond compare: 比较代码,解决冲突的。 gerrit 代码review jenkins 代码编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值