我试图在git中模仿subversion用户会认为是供应商分支。就我而言,我使用的是Drupal的补丁版本,可以通过git获得。所以我认为正确的做法是使用多个遥控器的git存储库,如Merging two remote repositories in Git
中所述我想从drupal.org git repo中获取一个Drupal版本,并将其提交给我自己的git repo,我将在其中应用补丁。所以我克隆了我的repo并将drupal.org添加为另一个遥控器,就像这样。
git clone myrepo:drupal/core
git remote add drupal.org http://git.drupal.org/project/drupal.git
git checkout -b custom-7.x drupal.org/7.x
git pull drupal.org 7.30
我相信我的问题来自最后一行。它正在拉动drupal 7.x的标记版本,这与分支的尖端不同。
接下来,我尝试将drupal 7.30推送到我的存储库中,这就是它失败的地方。
git push -n origin
...
! [rejected] custom-7.x -> custom-7.x (non-fast-forward)
error: failed to push some refs to 'git.electricgroups:drupal/core'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
具有讽刺意味的是,git提供了4行提示,但我仍然没有线索。
可以使用git来管理我的修补版Drupal吗?有没有更好的方法来设置它?如果没有,我如何通过此错误?
答案 0 :(得分:0)
Git试图告诉您远程custom-7.x分支无法快速转发到本地custom-7.x分支的状态。这在许多其他地方都有详细解释(包括最后一个提示指向你的git-push的手册页,但它基本上归结为你的远程分支有一个或多个提交,你的本地分支没有换句话说,远程分支中的提交不是本地分支的子集。
造成这种情况的原因有多种,但根据所提供的信息无法确定哪一个。