從一個git倉庫遷移代碼到另一個git倉庫(親測有效版)(轉)


不保留log等提交的記錄的遷移就不說了,soeasy!代碼復制粘貼就可以 目標:把A倉庫的代碼遷移到B倉庫並且保存所有的git log,B倉庫已經存在了哦,哪怕是個空倉庫。

再說這個之前先說點其他。在使用git的時候我們可能見到這樣的命令。不想看解說想直接看步驟的往下翻

git pull origin master //拉取遠程master分支的代碼
git push origin master //把代碼推到遠程master分支上去
復制代碼

有沒有人好奇為什么是origin,而不是其他名字,比如git pull orginal master或者git pull origin2 master;

解答上面的問題很簡單,請在你的工程中輸入

git remote
復制代碼

發現了什么呢?默認就有一個origin,代表遠程倉庫。origin是有地址,地址就是當前倉庫的git地址,是個url哦。所以為什么git push origin master就自動相應的推到的遠程倉庫的master分支了。

下面是正確的操作步驟,(看准情況分類很重要,就兩種)

不管哪種情況請從情況1開始看哈哈:

情況1:

B倉庫是一個空倉庫,除了默認的master分支,沒有任何分支。把A的branch1,branch2,branch3...依次遷入B,B也就有branch1,branch2,branch3,

  • 進入A工程
  • git remote

原因:看下當前遠程倉庫有啥名字,然后取個嶄新的、不重復的名字,名字是過渡,不必糾結取啥名字因為名字不是關鍵綁定的url才是,看下一步。這里取名origin2

  • git remote add origin2(這替換你自己心目中的名字) master

不糾結照抄這就話

  • git remote set-url origin2 git@git.hub.com:B.git

原因:后面的B倉庫地址url才是關鍵,origin2只是過渡,百人百種起法

  • 進入A工程的branch1分支上
  • git pull

原因:拉取一下最新代碼

  • git checkout -b branchB1

原因:branchB1是基於A工程branch1開的新分支,代碼跟A工程branch1一毛一樣,但是這個名字branchB1非常重要,非常重要,原因只有一個:這個分支會被推到B工程,結果就是B工程下面就有這個分支。所以你懂的,萬一你的B工程下面已經有了該分支名字,你這個做了好多工作的branchB1是根本推不上去的,是不是很瘋狂

  • git push origin2

結果:這一步能不能成功就看上一步,不多說,就看你取名字瞎不瞎

如果上面的結束,說明已經成功遷移出一個分支了。常見問題:

疑問1:問其他的分支怎么做,請重復

  • 進入A工程的branch2分支上
  • git pull
  • git checkout -b branchB2
  • git push origin2 branch2 變成branchB2然后被推到B倉庫

疑問2:你還問我第三個分支怎么遷移,不解釋啦實在不行哎我還能說啥。

疑問3: 我打眼一看B工程中的分支名字都是branchB1,branchB2....怎么破, 改分支的名字直接登陸git.hub.com,打開工程你會看到branches這個,點進去可以修改.至於改名字,代碼都遷移過去了,改個名字還很遠嗎

情況2:

B倉庫不是一個空倉庫,里面各種各樣亂七八糟的分支。把A的branch1,branch2,branch3...依次遷入B,B也就有branch1,branch2,branch3,

呃呃呃呃呃, 步驟跟上面一毛一樣,能不能推成功,就看你起名字的功夫了。什么名字,就是你最后要推到B工程上去的分支名字,注意部分就是上面疑問1的地方


作者:大番茄草莓醬
鏈接:https://juejin.im/post/5d6e0524f265da03ab426a6e
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM