一、使用背景
1.分布式
git和svn一樣都是管理代碼版本的工具,但是git更輕量級(jí)一些。首先git是分布式的,大家一定聽過區(qū)塊鏈,對(duì)就是那種分布式,沒有中心代碼管理的機(jī)器,大家都一樣。去中心化后,更加安全,流程。
2.管理改變
然后git每個(gè)commit節(jié)點(diǎn)是相對(duì)上一個(gè)的commit的改變,對(duì)!git監(jiān)控的代碼的改變,而不是復(fù)制每個(gè)代碼副本。所以!git切換分支的時(shí)候,也是相當(dāng)?shù)牧鞒獭?/p>
二、不同倉庫的操作 fork
站在高空看git:一般有人在github上開源了一個(gè)項(xiàng)目,然后你想去參與這個(gè)項(xiàng)目
- fork它;
相當(dāng)于把別人的項(xiàng)目新開了一個(gè)remote,這兩個(gè)remote可以通過pull request 把自己的代碼更新到別人的項(xiàng)目
如果想同步別人的代碼到本地,就為本地的分支設(shè)置一個(gè)上游,需要設(shè)置那個(gè)remote,remote的那個(gè)分支,意思是最后落腳是分支;
- 你自己的github的repository就會(huì)有這個(gè)項(xiàng)目了;
- 然后你就可以愉快的搬磚了
- 然后你搬完了,你可以把你的任何分支,提一個(gè)pull request給你fork的 remote的任何分支,其實(shí)你可以給任何remote提pull request,這要這個(gè)remote也是fork的同一個(gè)項(xiàng)目;
- 他們就可以合并你的代碼拉
- 你還可以給你的某個(gè)分支設(shè)置上游,來pull,更新代碼,push推送代碼(這里我感覺不科學(xué),直接給別人的項(xiàng)目推代碼,不要經(jīng)過同意?還是pull request優(yōu)雅一點(diǎn)吧);
1.先檢出 QC_L/cn到本地;
2.上游設(shè)為webpack-china/cn;
3.然后push;
通過這三個(gè)個(gè)操作,就將 QC_L/cn同步到為webpack-china/cn啦
1.意思就是本地倉庫可以設(shè)置多個(gè)remote倉庫;然后設(shè)置某個(gè)分支的上游分支后,通過push和pull實(shí)現(xiàn)同步;
2.設(shè)置上游是分支與分支之間的一個(gè)管理,是分支之間的操作,默認(rèn)本地的QC_L/cn是的上游是 origin/QC_L/cn ,我們可以把它的上游設(shè)置成任何remote上面的分支,然后通過push和pull就可以實(shí)現(xiàn)同步更新!
在多人協(xié)作的情況下的項(xiàng)目,很實(shí)用。
一個(gè)分支上面的操作
-
rebase合并多個(gè)節(jié)點(diǎn);
兩個(gè)分支上面的操作
-
git merge b合并b分支; -
cherry-pick,選擇commit;
版本回退
-
revert添加新的commit -
reset移動(dòng)指針