我的代码库看起来像这样。
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 仓库?
我的代码库看起来像这样。
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 仓库?
从v1创建一个新的分支并将新版本提取到那里。
git checkout -b upstream <v1>
tar -xzvf newversion.tar.gz
git add -A
git commit
您可以将不同版本之间的更改合并到您的主分支中,以便进行更新。
git checkout master
git merge upstream
git rm -r .
命令(以便在upstream分支中不保留在v1提交中存在但在新tarball中不存在的路径名(即已删除/重命名的文件))。 - Chris Johnsenoldversion.tar.gz
有文件a
和b
;newversion.tar.gz
有文件a
和c
(没有b
)。如果您只是在“old”上解压缩“new”,则会同时拥有b
和c
。您需要清除在“old”中存在但不在“new”中的任何内容。最简单的方法是删除“old”中的所有内容,然后解压缩(并通过-A
添加)与“new”一起提供的任何内容。git add -A
将从索引中删除工作树中不存在的路径名,但是如果您只是在后者上解压缩前者,则无法识别在“old”中但不在“new”中的路径名。 - Chris Johnsenrm -fr * && tar -zxvf archive.tar.gz && git add -A && git commit
- Kevin Labécot