不保留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的地方