2016-12-29 54 views
0

这里是什么,我有一个Git仓库做了一个时间表:凌乱的Git形势

  1. 从一个叫upstream库分叉,分支master
  2. master做出各种[无关]的变化,被推到origin
  3. 意识到应该对主题特定的分支进行更改,以便创建那些分支(称为to,pics)和cherry-pick,并从master
  4. 前推,rebase d topi,和csupstream/master
  5. 创建的PR从topi,和csupstream/master
  6. topi的PR被合并,cs不是; pullupstream/masterorigin/master,并删除了topi分支

现在我只剩下一个master分支,是多犯提前upstream/master,而大部分这些提交的实际上已经在upstream合并,然后拉到master。每次我从origin/master开始分支时,我必须拨打rebase来撤消这些提交,并将分支根据upstream/master取消。

我的问题:

  1. 我该如何解决这个问题,使origin/masterupstream/master是什?或者这不是一个真正的问题,可以绕过?
  2. 时间表中出现了什么问题,下一次该怎么办?

(资讯,可能是相关的:存储库是在GitHub上,我使用的是Ubuntu的16.04机器上的git v2.7.4,我准备在绝对必要做一个push --forceorigin/master,但我不知道有超过upstream控制)

+0

Downvoter,请解释一下吗? – shardulc

回答

1

我是能够使origin/master即使upstream/master用下面的命令:

git checkout master 
git fetch --all 
git reset --hard upstream/master 
git push --force 

其中涉及强制push,但固定的问题。长期的解决方案是永远不会直接承诺掌握,并且当从上游进行时,始终确保它将是一个快进合并。我的主题分支现在可以基于master并且目前没有问题。

(注:我被Freenode上的#git IRC频道在此帮助。)