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

不保留log等提交的記錄的遷移就不說了,soeasy!
目標(biāo):把A倉庫的代碼遷移到B倉庫并且保存所有的git log,B倉庫已經(jīng)存在了哦,哪怕是個空倉庫。

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

git pull origin master //拉取遠(yuǎn)程master分支的代碼
git push origin master //把代碼推到遠(yuǎn)程master分支上去

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

解答上面的問題很簡單,請?jiān)谀愕墓こ讨休斎?/p>

git remote

發(fā)現(xiàn)了什么呢?默認(rèn)就有一個origin,代表遠(yuǎn)程倉庫。origin是有地址,地址就是當(dāng)前倉庫的git地址,是個url哦。所以為什么git push origin master就自動相應(yīng)的推到的遠(yuǎn)程倉庫的master分支了。

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

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

情況1:

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

  • 進(jìn)入A工程
  • git remote

原因:看下當(dāng)前遠(yuǎn)程倉庫有啥名字,然后取個嶄新的、不重復(fù)的名字,名字是過渡,不必糾結(jié)取啥名字因?yàn)槊植皇顷P(guān)鍵綁定的url才是,看下一步。這里取名origin2

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

不糾結(jié)照抄這就話

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

  • 進(jìn)入A工程的branch1分支上
  • git pull

原因:拉取一下最新代碼

  • git checkout -b branchB1

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

  • git push origin2

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

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

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

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

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

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

情況2:

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容