Git 如何更新项目的修改版本?
我买了一个Unity资产,它以源代码的形式出现,我对它进行了更改,以更好地满足我的需求 我的问题是,我需要能够获得未来的版本,并将其与我自己的修改版本合并 我正在Git中使用我自己的修改版本,并且想知道是否有任何方法可以在不需要手动处理合并、大块和其他相关内容的情况下获得新的修改 我已经读过fork,但不确定是否可以在这里使用它。这里的关键是用原始代码版本模拟远程存储库 为此,请将收到的源代码的副本,Git 如何更新项目的修改版本?,git,Git,我买了一个Unity资产,它以源代码的形式出现,我对它进行了更改,以更好地满足我的需求 我的问题是,我需要能够获得未来的版本,并将其与我自己的修改版本合并 我正在Git中使用我自己的修改版本,并且想知道是否有任何方法可以在不需要手动处理合并、大块和其他相关内容的情况下获得新的修改 我已经读过fork,但不确定是否可以在这里使用它。这里的关键是用原始代码版本模拟远程存储库 为此,请将收到的源代码的副本,cd提取到该目录,然后git initit。你将有一个新的回购协议 在不涉及(即编译)任何内容的
cd
提取到该目录,然后git init
it。你将有一个新的回购协议
在不涉及(即编译)任何内容的情况下,运行git checkout--branch upstream
创建一个新分支,并运行git add.
将所有代码添加到索引中。然后git commit
it,写一些消息说这是您收到的原始源代码,如果有,请包括它的版本
在此之后,git checkout--branch master
用于创建master
分支,并在那里进行修改。尽可能多地提交您需要/想要的内容-这将是您的工作分支
每当您获得第三方代码的新版本时,git隐藏所有未提交的更改,然后git向上游签出
返回到您拥有的最新版本。复制你在那里收到的所有文件-我会先尝试git rm
repo中的每个文件,然后复制和git add
新文件,以防它们删除了任何人-然后git commit
新版本。更新后,git checkout master
和git merge-upstream
将工作分支上的所有更改包括在内
您应该git merge
或git rebase
您可能正在处理的任何其他分支来包含这些更新。此外,您可能希望将更新后的上游
分支合并到一个单独的分支中(或进行重基
),以便在更新中断任何更改的情况下测试您的项目
但关键的想法是:有一个分支,就像源代码是git版本的一样,然后在此基础上开展工作。请重新表述一下您的问题:您希望拥有某些“源代码”的版本,但希望合并“旧”源代码的新版本,以便在无需用户干预的情况下自动合并到源代码中?您可以将源代码和所有未来版本作为单独的分支导入。然后根据初始版本创建自己的个人特征分支。对于作为分支导入的每个新版本,您现在在新版本分支上对您的personal feature分支进行重基。显然,如果您的修改不适合新版本,您可能必须对此进行调整。通过这种方式,您可以始终半自动地将更改应用于新版本。如果您希望修改原始源代码,则在更新原始源代码时,您必须预料到冲突,并且您希望引入这些更改。这就是它的工作原理,没有办法绕过它;幸运的是,Git可以自动解决大多数冲突,但机会仍然存在。如果您对某条线路进行了更改,而上游项目对同一条线路进行了不同的更改,您希望Git做什么?@jthill我目前复制了我要更改的部分,请对原始部分进行评论,和编辑副本,我想我希望更新应用到评论部分。如果添加了一个新的部分,比如一个新的方法调用,那么它也应该被添加。谢谢。我已经阅读并重新阅读了你的文章,但不明白我对分支的编辑将如何使我通过更新的原始代码库通过新文件获得的新修改过载。问题是,我对代码repo的修改是另一个项目的一部分,我不知道我是否可以将代码作为两个存储库的一部分,一个是你建议的,一个是我的项目。想象一下,这是我在项目中使用的一个中间件,但该中间件的作者更新了代码,但我必须对其进行更改以满足我的需要。