簡體   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