[英]merging the changes from two repositories in github
我有一個項目的git repo。 由於代碼庫中存在一些問題,很難識別和修復,為了滿足截止日期,我在本地機器上創建了一個新項目,並開始重新開發整個應用程序。 開發之后,我運行了git init
命令,然后運行git remote add origin <path to the original repo>
。
當我嘗試推送更改時,git不允許我推送更改,而我收到的消息是you need to at least perform a single commit
。 我不知何故必須保護我的更改,並在服務器上創建另一個臨時倉庫,最后將我的更改推送到新的倉庫。
我需要將我的新repo更改移動到我原來的repo,最好是在新的分支上。 我怎么能這樣做? 請讓我知道完成這項工作的步驟。
這對git來說不是問題。 看看這里的答案。 對你來說,這將是:
cd <<original_repo>>
git remote add new_repo <<url_to_new_repo>>
git fetch new_repo
git push origin refs/remotes/new_repo/master:refs/heads/new_repo_master
這將創建一個新的分支origin
稱為new_repo_master
包含從在提交master
在新的存儲庫分支。
有兩種可能的解決方案,
將存儲庫A復制到較大項目B中的單獨目錄中,或者(可能更好)將存儲庫A克隆到項目B中的子目錄中。然后使用git子模塊將此存儲庫作為存儲庫B的子模塊 。
這是松耦合的倉庫,其中一個倉庫繼續發展一個很好的解決方案,以及發展的主要部分是A.單獨的獨立發展,也見SubmoduleSupport和GitSubmoduleTutorial上的Git維基網頁。
您可以使用子樹合並策略將存儲庫A合並到項目B的子目錄中。 Markus Prinz在Subtree Merging和You中對此進行了描述。
git remote add -f Bproject /path/to/B
git merge -s ours --no-commit Bproject/master
git read-tree --prefix=dir-B/ -u Bproject/master
git commit -m "Merge B project as our subdirectory"
git pull -s subtree Bproject master
或者你可以使用apenwarr(Avery Pennarun)的git子樹工具( github上的存儲庫 ),例如在他的博客文章中宣布一個新的替代git子模塊:git子樹 。
我認為在你的情況下(A是大項目B的一部分)正確的解決方案是使用子樹合並
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.