第三方项目不在 GIT - 新版本 - 保留我的更改

Third party project not in GIT - New version - Keep my changes

我从 Codecanyon 购买(许可)了一些代码,这些代码未在 GIT 中维护。 我现在对它做了很多更改(使用 GIT)。 很快原始代码的作者将发布一个新版本。 我会想在不丢失我自己的情况下合并他们的更改。 因此,我想加载他们的代码并让 GIT 指出冲突,以便我可以(希望)将新代码合并到我的代码中。 谁能推荐一种安全的方法来实现这一目标? 谢谢

将 git 与非 git 项目混合并不是很好,也许这是基于意见,但这是我会做的:

  1. 创建一个 git 存储库,将您的第 3 方代码放入其中并进行第一次提交(这将是您希望调用的 mastermain 分支。
  2. 创建一个新分支next(您选择名称)
  3. 在此分支上进行修改,定期提交并在它们正常工作时将它们合并到 master
  4. 当您的第 3 方项目有新版本时,确保您所有的修改都在您的 master 中,然后创建一个分支 thirdParty 并替换它的新版本内容(这是它变得丑陋的地方)。
  5. 提交此更改。
  6. 那么你有两个选择 a) 合并 thirdPartymaster 或 b) masterthirdParty。考虑到他们的修改一定很大,这可能会非常混乱,所以我会选择 b)。
  7. Git 将打印所有冲突,您将解决它们:)

如果您在本地存储库中提交了他们代码的第一个版本:

$ git log --graph --oneline
1234ee * (HEAD -> master) my latest changes 
1234dd * added a feature
  ...
1234aa * a commit, with the initial version of the product's code
  ...

你可以:

  • 创建一个从该提交开始的分支:
git checkout -b upstream 1234aa
  • 用新版本更新代码:
# to be thorough : you should delete files which existed in the first version,
# and do not exist in the new version
git rm -- [list all files of original archive]

# for example, here is one way to drop all versioned files :
git rm -- "*"

# extract the files from the new version :
tar -xzf newversion.tgz

# add and commit :
git add .
git commit -m "new version"
  • 您现在可以在本地分支中合并 upstream :
git checkout master
git merge upstream