Github覆盖旧项目

时间:2016-02-10 16:36:11

标签: java git github

我在Github上有一个Java项目,现在我将其更改为使用Gradle并且必须更改整个项目结构。为此,我创建了一个全新的Java项目并复制粘贴代码文件。正如我所料,我不能将项目合并到Github上的主分支。有没有办法如何覆盖旧的主分支?我不需要旧结构,代码是一样的。我也不想在不同的文件夹上复制代码。我该如何解决这个问题?

摘要

我想用新代码覆盖旧代码,因为这是一个包含共享代码和多平台的复杂多项目解决方案,如果我保持这样的话,会有很多冲突会更容易解决新代码并抛弃旧代码。

2 个答案:

答案 0 :(得分:3)

因此,假设您将旧主服务器作为本地存储库中的master分支,将新主分支作为new-master。您希望将new-master中的更改合并到master,并在发生冲突时始终采用new-master引入的更改。为此,请执行以下操作:

  • git checkout master
  • git merge -X theirs new-master

之后,master将包含new-master中所做的所有更改。现在,您只需将master分支推送到github即可。您不会丢失任何版本历史记录。

来自the git-merge man page-X theirs的说明。

ours
    This option forces conflicting hunks to be auto-resolved cleanly by
    favoring our version. Changes from the other tree that do not conflict
    with our side are reflected to the merge result. For a binary file, 
    the entire contents are taken from our side.

    This should not be confused with the ours merge strategy, which does
    not even look at what the other tree contains at all. It discards
    everything the other tree did, declaring our history contains all
    that happened in it.

theirs
    This is the opposite of ours.

如果要删除历史记录并重新开始使用新存储库,则需要强制将新的本地存储库推送到github存储库。

git push --force origin master

另见:

在执行命令之前,请务必了解您在做什么。强制推送到公共存储库通常是一个坏主意。特别是,如果您不是唯一的开发人员。

答案 1 :(得分:2)

这是我的建议 -

  1. 从原始
  2. 导入旧的主分支
  3. 切换分支并将分支命名为“new master”或其他内容
  4. 在“新主人”中进行更改
  5. 现在在您当地合并新的主人和主人
  6. 解决冲突
  7. 构建它,如果成功推动它。
  8. 或 -

    1) Just make the changes in new master 
    2) Push it as a new branch 
    3) Use it as the origin for your future forks.
    

    你可以弃用旧的主人,这样你也会有变化的历史记录,唯一可以改变的是你的原始URI

    重命名你的分支 -

      git branch -m old_branch new_branch
      git push origin new_branch