个人常用的git和gerrit操作
rebase
分支之间的
这种情况常见于迭代开始时候从master新建开发分支,迭代结束的时候合并到master
$ git checkout mywork
$ git rebase origin
这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。
--------------------- 来自 wh_19910525 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/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