2012-04-20 102 views
3

我下载了第三方项目作为未跟踪的文件(没有.git文件夹),并启动了一个新的git仓库,其中包含$git init以跟踪我的更改。如何将新的git存储库从另一个repo更改为分支?

我后来发现这个项目已经有一个公共的git仓库,它与我下载的裸文件(与我的初始提交相同)具有相同的状态。

应该有什么完成:

克隆远程回购,并提出了新的本地分支,然后将其推到遥远。

其实我什么做的:

刚接过文件,并在它开始一个干净的地方混帐回购协议(主),并提出了一些提交。

我想要做什么:

打开我的本地初始提交到远程回购的一个分支(改变其父母),并保持我已经做了改变。

我想这应该是可能的,但我不知道足够的Git。

谢谢!

回答

3

嗯,你可以试试下面的(你可能需要使用不同的名称origin,由你):

  1. git remote add origin url_of_project_repository
  2. git fetch origin
  3. git rebase FETCH_HEAD

你有很大的机会,git实际上会把你的基础和新的远程实际上是相同的一组文件,并且将解决假合并公司通过跳过除您的更改之外的任何内容来冲突。

如果这样做不能正常工作,你也可以直接在其他地方克隆“真正的”存储库,然后在其上重新应用你的更改(并且会有无数的方法来做到这一点,从一个非常手动DIY方式来一些更自动化的手段)。

+0

这比我猜的更简单。正如你所预料的那样,git会自动尝试猜测我的更改开始的位置并将它们应用于原点,但将它们应用于主分支。 任何想法如何使我的提交属于一个新的分支? – 2012-04-20 13:25:48

+0

因此,您将工作置于原始包裹的历史之上。你只需要重命名你的本地“master”分支'git branch -m master your_branch_name'。 – Romain 2012-04-20 14:21:19

2

您可以将您的回购作为远程回购添加到原始回购,提取并尝试重新分配。

相关问题