Ant*_*ton 40 git github rebase git-rebase
我的老板最近决定尝试一个"增加容量"的外包小组,因为我们修改现有的应用程序以添加新功能.尽管我担心他所选择的小组似乎并没有很好地沟通,也没有提出足够的问题来真正理解和有效,但我们还是和他们一起去了.
我们将它们设置为在我们的Git存储库(托管在GitHub上)上进行协作.我们为他们创建了一个分支(TheOutsourcedBranch,我们称之为),并要求他们在这个分支中完成所有工作.
此外,我们要求他们在每天结束时推送他们的提交,以便我们可以很好地了解他们的工作速度,以及(更重要的是)他们的代码有多好.
今天他们第一次推了推.五个提交,所有这些都是主人.我正在试图弄清楚如何将他们的提交从master转移到TheOutsourcedBranch,而不会丢失他们已经完成的工作(尽管从它的外观来看,无论如何我们都不得不扔掉它).
橙点是他们的承诺,灰点是我的.
我知道有很多关于变基的问题(这可能是我在这里需要做的)但我很难弄清楚哪些适用于我的具体情况.如果重要的话,外包集团和我自己是现在唯一真正使用回购的人.
提前致谢!
编辑: 我可能已找到我正在寻找的内容:使用Git将最近的提交移动到新的分支
不过,我想检查一下我的理解.在本地,我创建了一个主要的分支(TheOutsourcedBranch),它将包含所有AH.然后我将主人重置为C.主人现在包含AC.
假设这是正确的,那对我(本地)来说没问题.但是,我需要做些什么才能"强制"远程存储库(GitHub)接受我对本地事件如何发挥作用的本地视图并丢弃其历史版本?
一旦这个问题发生了,我想我可以重新解决这个问题,使其更具通用性/信息性,并减少一些毛病 - 否则它可能是一个很好的删除候选人,我猜.
Dan*_*man 50
获得分支很容易:
git branch their-branch master
git reset --hard master $SHA1_OF_C
git push --force $SHARED_REPO_REMOTE
Run Code Online (Sandbox Code Playgroud)
这将改写历史; 它创建一个新的分支,它等同于当前的主分支命名their-branch
,然后重置本地主分支以指向随机SHA1(...或分支,或标记,或其他),最后强制更新远程存储库分支以匹配你当地的分公司.
这恰好提供了您想要的情况.
注意事项:这将重写历史,并可能搞砸任何已经建立旧主人的人.请注意以下合并问题.
没有期望或要求的变基.
(顺便说一句,我建议你给他们一个临时存储库,或者让他们使用git send-email
,或者使用GitHub拉取请求,否则阻止他们推动掌握直到他们做对了.根据你的总结,可能是一些时间的流逝.)