不保留log等提交的記錄的遷移就不說了,soeasy!
目標(biāo):把A倉(cāng)庫的代碼遷移到B倉(cāng)庫并且保存所有的git log临庇,B倉(cāng)庫已經(jīng)存在了哦,哪怕是個(gè)空倉(cāng)庫昵慌。
再說這個(gè)之前先說點(diǎn)其他假夺。在使用git的時(shí)候我們可能見到這樣的命令。不想看解說想直接看步驟的往下翻
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)單,請(qǐng)?jiān)谀愕墓こ讨休斎?/p>
git remote
發(fā)現(xiàn)了什么呢淳蔼?默認(rèn)就有一個(gè)origin侧蘸,代表遠(yuǎn)程倉(cāng)庫裁眯。origin是有地址,地址就是當(dāng)前倉(cāng)庫的git地址讳癌,是個(gè)url哦穿稳。所以為什么git push origin master就自動(dòng)相應(yīng)的推到的遠(yuǎn)程倉(cāng)庫的master分支了。
下面是正確的操作步驟晌坤,(看準(zhǔn)情況分類很重要逢艘,就兩種)
不管哪種情況請(qǐng)從情況1開始看哈哈:
情況1:
B倉(cāng)庫是一個(gè)空倉(cāng)庫,除了默認(rèn)的master分支骤菠,沒有任何分支它改。把A的branch1,branch2,branch3...依次遷入B,B也就有branch1,branch2,branch3,
- 進(jìn)入A工程
- git remote
原因:看下當(dāng)前遠(yuǎn)程倉(cāng)庫有啥名字商乎,然后取個(gè)嶄新的央拖、不重復(fù)的名字,名字是過渡鹉戚,不必糾結(jié)取啥名字因?yàn)槊植皇顷P(guān)鍵綁定的url才是鲜戒,看下一步。這里取名origin2
- git remote add origin2(這替換你自己心目中的名字) master
不糾結(jié)照抄這就話
- git remote set-url origin2 git@git.hub.com:B.git
原因:后面的B倉(cāng)庫地址url才是關(guān)鍵抹凳,origin2只是過渡袍啡,百人百種起法
- 進(jìn)入A工程的branch1分支上
- git pull
原因:拉取一下最新代碼
- git checkout -b branchB1
原因:branchB1是基于A工程branch1開的新分支,代碼跟A工程branch1一毛一樣却桶,但是這個(gè)名字branchB1非常重要境输,非常重要,原因只有一個(gè):這個(gè)分支會(huì)被推到B工程颖系,結(jié)果就是B工程下面就有這個(gè)分支嗅剖。所以你懂的,萬一你的B工程下面已經(jīng)有了該分支名字嘁扼,你這個(gè)做了好多工作的branchB1是根本推不上去的信粮,是不是很瘋狂
- git push origin2
結(jié)果:這一步能不能成功就看上一步,不多說趁啸,就看你取名字瞎不瞎
如果上面的結(jié)束强缘,說明已經(jīng)成功遷移出一個(gè)分支了。常見問題:
疑問1:問其他的分支怎么做不傅,請(qǐng)重復(fù)
- 進(jìn)入A工程的branch2分支上
- git pull
- git checkout -b branchB2
- git push origin2
branch2 變成branchB2然后被推到B倉(cāng)庫
疑問2:你還問我第三個(gè)分支怎么遷移旅掂,不解釋啦實(shí)在不行哎我還能說啥。
疑問3: 我打眼一看B工程中的分支名字都是branchB1,branchB2....怎么破访娶,
改分支的名字直接登陸git.hub.com,打開工程你會(huì)看到branches這個(gè)商虐,點(diǎn)進(jìn)去可以修改.至于改名字,代碼都遷移過去了,改個(gè)名字還很遠(yuǎn)嗎
情況2:
B倉(cāng)庫不是一個(gè)空倉(cāng)庫秘车,里面各種各樣亂七八糟的分支典勇。把A的branch1,branch2,branch3...依次遷入B,B也就有branch1,branch2,branch3,
呃呃呃呃呃叮趴,
步驟跟上面一毛一樣割笙,能不能推成功,就看你起名字的功夫了眯亦。什么名字伤溉,就是你最后要推到B工程上去的分支名字,注意部分就是上面疑問1的地方