如何将一个项目的新版本导入到我的git仓库中?

4

我的代码库看起来像这样。

v1 - A - B - C ...

提交 v1 代表了 upstream-project-foo-0.9.8.tar.gz 的内容,而提交 A、B ... 则是我的修改。

目标是升级我拥有的 upstream-project 并将提交 A、B、C ... 移植到其中。

如何将新版本的 upstream-project tarball 添加到我的 git 仓库作为另一个分支?或者我应该考虑创建第二个 git 仓库?

1个回答

2

从v1创建一个新的分支并将新版本提取到那里。

git checkout -b upstream <v1>
tar -xzvf newversion.tar.gz
git add -A
git commit

您可以将不同版本之间的更改合并到您的主分支中,以便进行更新。

git checkout master
git merge upstream

你可能也想要从C分支(或者你最新的版本)创建一个分支来合并更新,然后在完成后将第三个分支合并回主分支。

1
在提取tarball之前,您可能希望运行git rm -r .命令(以便在upstream分支中不保留在v1提交中存在但在新tarball中不存在的路径名(即已删除/重命名的文件))。 - Chris Johnsen
1
@Chris 我的理解是,根据这篇文章:https://dev59.com/lHRB5IYBdhLWcg3wn4UL,使用 add -A 就可以覆盖所有情况。 - Brad Mace
2
将两个tarballs图像化:oldversion.tar.gz有文件abnewversion.tar.gz有文件ac(没有b)。如果您只是在“old”上解压缩“new”,则会同时拥有bc。您需要清除在“old”中存在但不在“new”中的任何内容。最简单的方法是删除“old”中的所有内容,然后解压缩(并通过-A添加)与“new”一起提供的任何内容。git add -A将从索引中删除工作树中不存在的路径名,但是如果您只是在后者上解压缩前者,则无法识别在“old”中但不在“new”中的路径名。 - Chris Johnsen
上面的评论是正确的。 最佳答案:rm -fr * && tar -zxvf archive.tar.gz && git add -A && git commit - Kevin Labécot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接