git和gerrit常用操作汇总

个人常用的git和gerrit操作

 

rebase

分支之间的

这种情况常见于迭代开始时候从master新建开发分支,迭代结束的时候合并到master

$ git checkout mywork

$ git rebase origin

这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

---------------------  来自 wh_19910525 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wh_19910525/article/details/7554489?utm_source=copy 

本地和远程之间的

本地有commit,但是没有push或者还是在gerrit上没有review&submit,remote和本地不同步,原理就是已remote为基础,然后把本地修改全部打上去。平时都是git pull会自动merge,然后后面会发现无法往gerrit上传代码了,因为gerrit上是不容许上传merge提交的,这个时候rebase可以把merge取消掉。

git checkout master  #选择分支  

git fetch origin  #fetch与pull的区别,自己再搜吧~  

git rebase origin/master  #查看有“CONFLICT (content): ”的地方,手工解决冲突后,下一步  

git add dev/controller/web/index.php #这只是一个举例,即要先add操作  

git rebase --continue  

git push origin HEAD:refs/for/master    #OK了  

 

gerrit无法rebase

Git pull拉代码解决冲突 然后add & commit

git rebase 解决冲突 然后add & git rebase --continue  

最后push到gerrit

 

gerrit review不过修改代码

不abandon代码,你回去之后,修改出问题的Java文件,修改好之后,

git add 该出问题.java 

git commit --amend

git push origin HEAD:refs/for/master

 

vim操作

git pull的时候回自动merge代码,这个时候会自动弹出vim修改commit描述

按住shift

zz    保存退出

zq    不保存退出,q表示放弃

 

撤销本地单个文件修改

git checkout -- 文件

 

撤销最近一次commit(还没有push)

git reset --soft HEAD^

 

舍弃本地代码,远程版本覆盖本地版本

使用这种方法之前,可以先将本地修改的代码备份一下,避免重敲代码。具体命令如下:

$:git fetch --all

$:git reset --hard origin/master

$:git pull

 

clean

git clean 参数

    -n 显示 将要 删除的 文件 和  目录

     -f 删除 文件,-df 删除 文件 和 目录

git clean -n

git clean -df

git clean -f

你可能感兴趣的:(互联网)