簡體   English   中英

合並來自github中兩個存儲庫的更改

[英]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.單獨的獨立發展,也見SubmoduleSupportGitSubmoduleTutorial上的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM