Gerrit 踩坑之旅

951 阅读3分钟

gerrit :账号密码输入

初次clone代码时,在生成密钥后,一定要手动输入账号密码

git config --global user.name "Your Name"

git config --global user.email "youremail@yourdomain.com"

gerrit :重复push

1.如果push到gerrit后,gerrit未审批,然后再次push,此时未审批的提交会默认再提交一次,而我们可以针对性的选择push即可避免重复push

gerrit :git push失败

有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误 这时候你可以使用git commit --amend,这个只能修改提交的信息,当然本质是commitid被修改了,如果需要修改已经提交过的文件,先将修改之后的文件add,然后使用git commit --amend修改commit注释信息,然后再重新push就可以了 常见错误有:

错误一:“Missing tree 7cb7d11cbf6b23f2c27f15ec17c58818d4a20522”

解决方案:git commit --amend 修改提示信息(commitid)

错误二:“change http://gerritXXX/c/coding-cloud-platform/+/525 closed)”
原因:525这个commit已经提交了。

解决方案:git commit --amend 然后重新push,然后发现有时候好用,有时候不好用,可能是rebase导致的,可以git log 找到本次提交的上次的commitId, Git reset --soft commidId,然后提交即可

gerrit :远程有冲突 Merge Conflict

例如如下错误提示:

error: Your local changes to the following files would be overwritten by merge:
    xxx/xxx/xxx.php
Please, commit your changes or stash them before you can merge.
Aborting

可以采用如下解决方案:

1.手动将本地代码进行备份,git reset --hard HEAD丢弃到本地的修改(如果已经commit)重新拉取代码,再手动将备份更新提交 2.回滚到上一次提交然后

git stash
git pull
git stash pop

gerrit :常用命令

git pull // 拉取远程库的代码

git pull --rebase origin master // 强制把远程库的代码跟新到当前分支上面

git fetch // 把远程库的代码更新到本地库

git add .文件目录 // 把本地的修改加到stage工作区中

git commit -m '提交信息' // 把stage中的修改提交到暂存区

git branch 查看远程分支/全部分支

git checkout master/branch // 切换到某个分支

git checkout -b test // 新建test分支

git checkout -d test // 删除test分支

git merge master // 假设当前在 test 分支上面,把 master 分支上的修改同步到 test 分支上 git merge tool // 调用 merge 工具

git stash //把未完成的修改缓存到栈容器中
git stash list // 查看所有的缓存

git stash pop // 恢复本地分支到缓存状态

git blame someFile // 查看某个文件的每一行的修改记录()谁在什么时候修改的)

git status // 查看当前分支有哪些修改

git log // 查看当前分支上面的日志信息

git diff // 查看当前没有add的内容

git diff --cache // 查看已经add但是没有commit的内容

git diff HEAD // 上面两个内容的合并

git show commit-id // 显示某次commit-id的修改内容

git reset --hard HEAD // 撤销本地修改

git reset --hard commit-id // 撤销commit-id前面的所有修改

git apply test.patch //打包patch

命令参考: 简书作者:平常心的胖77