似乎在使用gerrit时,默认情况下所有更改都取决于前一个。我不分支进行新的更改,我只是在主分支上工作,然后将提交的更改推送到远程源/主服务器。即使两个提交彼此无关,也会每次创建依赖关系。
我遇到了一些问题,这些问题让我觉得我没有正确地将git与gerrit结合使用。
在我的git / gerrit工作流程中,每次提交都不会依赖于之前的提交会发生什么?我也尝试为变化创建一个新的分支:
> git pull origin master
> git checkout -b new_branch
> #make a change
> git add -A
> git commit #with gerrit's commit hook in .git/hooks
> git push origin <sha1>:refs/for/master
这样可行,但gerrit仍会报告对先前提交的项目的依赖。
答案 0 :(得分:13)
这是Gerrit
依赖关系的意思 - 在另一个提交之上的提交。如果两者都在审核中,则较新的一个取决于较旧的那个。
如果您不希望它们彼此依赖,请不要在彼此之上创建提交。创建一个提交,然后根据master创建一个新的分支,用于下一次提交
(git checkout origin/master -b NEW_BRANCH_NAME)
。
当您推送第二次提交以供审核时,它的父级已经发布,并且不依赖于任何内容。
答案 1 :(得分:0)
我已经被教导要在每个git reset --hard HEAD~1
后执行git push
来解决这个问题。
答案 2 :(得分:0)
作为git reset --hard HEAD~1
的变体,我改用它:
git reset --hard origin/master
假设我正在master
工作以进行快速更改。
否则,首选在主题分支中工作。
有许多Git脚本可以帮助管理主题分支:
git-flow
git extras
git create-branch
我确定还有其他人。