繁体   English   中英

当我想从git repo中删除所有文件然后添加新文件时,如何避免冲突

[英]how to avoid conflict when I want to remove all files from git repo and then add new files

(编辑问题:)

我在github中有2个存储库,这些存储库是http://github.com/abc.githttp://github.com/xyz.git

现在,存储库“abc.git”是该项目的主要回购。 经过大约一个月的开发,我们发现通过制作可重复使用的代码可以做得更好。 所以我们决定为一个可重用的通用代码库创建一个新的repo,即xyz.git。 所以现在我们有了

  1. abc.git(非常项目特定代码+外部模块+代码“我们要重写”)
  2. xyz.git(代码“我们可以重复使用”+外部模块)

现在我们重新使用的代码基本上是我们添加了一些新文件,删除了一些旧文件并在xyz.git中进行了修改。 此代码最初来自abc.git中的“我们要重写”代码。

到目前为止,我希望:)

现在我们有2个选项

  1. 创建一个新的repo说project.git,添加一个新的远程仓库,即xyz.git,并合并并从abc.git中选择我们需要的文件。 所以在命令方面如下

    • 整个github新的repo创建过程并添加一个README文件。 (这是我的project.git来源)
    • git remote add xyz git@github.com:xyz.git
    • git checkout -b xyz
    • git pull xyz master
    • git状态
    • git checkout master
    • git merge xyz
    • git commit -a
    • git push origin master

现在我们使用xyz.git + README填充project.git并开始从abc.git中挑选樱桃的辛勤工作(我想避免,我也错过了所有旧历史)

  1. 我认为我能做的是删除abc.git中的所有文件并带回xyz.git。 在代码方面有以下方式。

    • git rm -r *(这是我的abc.git来源)
    • git commit -m
    • git push origin master(现在abc.git没有文件,但它有.gitmodules和.git)

    • git remote add xyz git@github.com:xyz.git

    • git checkout -b xyz
    • git pull xyz master

这是冲突开始的地方..有两种类型的冲突(外部模块,因为一些常见的外部模块和一些文件)。

我想到了第三个选项,即只需执行git log -l并将其转储到文本文件中,然后使用一些查看器来获取历史记录。

坦率地说,我只是想尽可能地保存历史,樱桃采摘很无聊,但它是可行的。 另一个问题是,如果您需要删除回购,如何保存回购日志? 唯一的理由是我希望保持一个已经废弃的回购活动是为了历史和变化。

谢谢。

我完全猜测,因为你很难准确地说出你在做什么。 但我的猜测是你的删除与远程repo的更改历史冲突。 线路在遥控器中被修改并在您的线路中被删除。 Git不知道该怎么做,所以它把它标记为冲突。

如果我们知道你的目标是什么,我认为你的问题会更容易回答。

你的编辑使它变得更好,但很难知道你想做什么。 例如:我仍然不清楚为什么你要挑选,如果xyz是一个有效的(完全功能)进化而不是abc。

如果您想要的是合并两个存储库,那么没有历史丢失,那么......就这样做。 你可以在那里住两个独立的分支,而不会在另一个脚上留下任何标记。 例如(考虑到这两个因为它们位于github的repo页面之上):

$ git clone git://github.com/rails/rails.git monster
$ cd monster
$ git fetch git://github.com/madrobby/scriptaculous.git master:old
$ git branch
    * master
      old
$ ls
    [ looks like rails ]
$ git checkout old
$ ls
    [ looks like scriptaculous ]
$ git checkout master
    [ looks like rails again ]

如果你想要的是合并历史基线,即使xyz成为abc的后代,它在git filter-branch手册页(搜索--parent-filter )中具体记录,你只想使用你的abc“old”分支作为一个嫁接点。

谈到嫁接点,看起来他们可能会直接用它来做这件事,但我对这个概念并不熟悉。 请查看此讨论以获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM