Gerrit的push
需加上分支,如为master分支提交则为:
git push origin HEAD:refs/for/master
简单点说,就是refs/for/mybranch
需要经过code review之后才可以提交;
refs/heads/mybranch
不需要code review
遇到合并失败提示:
Project policy requires all submissions to be a fast-forward.
Please rebase the change locally and upload again for review.
解决:去Gerrit页面点击rebase按钮
Gerrit git push 时提示:you are not allowed to upload merges
! [remote rejected] HEAD -> refs/for/master (you are not allowed to upload merges)
error: failed to push some refs to 'ssh://xxxx/xxxx'
解决方法:
敲git rebase 然后按提示执行就行了
$ git rebase
$ git push origin HEAD:refs/for/master
如果rebase 发生冲突的话,则修改,修改完后git add -u filename,然后git rebase –continue ,直到没有冲突为止。
不需要commit 。
出现问题的原因:在本地分支ahead 远程分支commit 不止一个的时候,即是出现了分叉,在这种情况下使用了git pull 更新代码之后去git push 就会产生如此情况
解决原理: 使用rebase,”放弃”本地补丁,实则是保存起来然后加在远程分支的最前面
rebase解析链接
解决Git冲突造成的Please move or remove them before you can merge
git clean -d -fx “”
其中
x —–删除忽略文件已经对git来说不识别的文件
d —–删除未被添加到git的路径中的文件
f —–强制运行
查看远程分支 -a(or -av),前面带*号的代表你当前工作目录所处的分支
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/release-2.0.3
remotes/origin/release-2.0.4
remotes/origin/release-2.1.0
查看本地分支
$ git branch
* master
创建分支
$ git branch test
$ git branch
* master
test
下载远程分支
选择一个非master的分支,如dev分支,修改里面的代码
$ git branch dev remotes/origin/dev #先将远程gitlab上创建的分支在本地别名化
$ git checkout dev #使用git checkout命令切换到dev分支下
将分支推到远程分支
git push origin test
切换分支
$ git checkout test
Switched to branch 'test'
$ git branch
master
* test
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
$ git branch
* br-2.1.2.2
master
test
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (br-2.1.2.2)
$ git checkout test
M jingwei-server/src/main/java/com/taobao/jingwei/server/service/cmd/GetCustomerTarCmd.java
M jingwei-server/src/main/java/com/taobao/jingwei/server/util/ServerUtil.java
Switched to branch 'test'
shuohailhl@SHUOHAILHL-PC /f/ggg/jingwei (test)
$ git branch
br-2.1.2.2
master
* test
M 表示从原来分支(上一次修改没有提交br-2.1.2.2)带过来的修改
删除本地分支 git branch -d xxxxx
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
$ git branch
* master
test
$ git branch -d test
Deleted branch test (was f8aed16).
$ git branch
* master
删除远程版本
$ git push origin :test
删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name
一不小心把本地的临时分支push到server上去了,想要删除。
一开始用git branch -r -d origin/branch-name
不成功,发现只是删除的本地对该远程分支的track。
正确的方法应该是这样:git push origin :branch-name
冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
放弃本地修改,强制更新
$ git fetch --all
Fetching origin
$ git reset --hard origin/master
HEAD is now at cdb1a85 xxxxxxxxxxxxxx
git fetch 只是下载远程的库的内容,不做任何的合并
git reset 把HEAD指向刚刚下载的最新的版本