Git 是什么祠汇?
Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)。
Git 有什么特點(diǎn)失暂?
分布式存儲(chǔ)彼宠、可以離線(xiàn)工作 鳄虱、全球版本號(hào)....
記不住了.....總結(jié)來(lái)說(shuō)就是:高端?大?氣上檔次!
1 環(huán)境安裝
1.1 Git安裝
Git 下載地址: Git for Windows
1.2 TortoiseGit安裝
TortoiseGit凭峡,Git 客戶(hù)端拙已,32/64 位及對(duì)應(yīng)的語(yǔ)?言包下載地址: TortoiseGit
安裝過(guò)程總結(jié)起來(lái)就是:下一步。
2 使用
場(chǎng)景1
Tips:
我們需要開(kāi)發(fā)一個(gè)新項(xiàng)目摧冀,要從遠(yuǎn)程倉(cāng)庫(kù)將代碼克隆到本地倍踪。
- 進(jìn)入到 X:\XXXXX 目錄
- 右擊 => Git Clone...
- 如下圖所示(紅框中的內(nèi)容就是項(xiàng)目的Git地址)
Tips
:根據(jù)項(xiàng)目大小, 時(shí)間會(huì)不一樣. 克隆完成后, 如果沒(méi)有錯(cuò)誤, 會(huì)給出如下提示
場(chǎng)景2
Tips:
單人獨(dú)立開(kāi)發(fā)這個(gè)項(xiàng)目,噼里啪啦一頓操作索昂,操作結(jié)束提交到本地倉(cāng)庫(kù)建车。
- 創(chuàng)建一個(gè)文件,如 test1.txt , 然后提交 (commit) 到本地版本庫(kù)椒惨。
-
右擊 => Git Commit => ”master” 缤至。如下圖所示:
右鍵顯示的菜單欄 - 填寫(xiě)提交備注 message (不填寫(xiě)是不允許提交的),勾選需要提交的文件框产,點(diǎn)擊 commit凄杯,即可將本地代碼提交到本地倉(cāng)庫(kù)。出現(xiàn)如下彈框秉宿,表示提交成功戒突。
ps
:提交時(shí),會(huì)發(fā)現(xiàn)上圖中的 Status 有這幾種值
Status | 含義 |
---|---|
Unknown | 新增的文件描睦,也不在版本庫(kù)膊存。 |
Added | 新增的文件,在版本庫(kù)忱叭。 |
Modi?ed | 文件修改隔崎,在版本庫(kù) 。 |
Missing | 文件被刪除韵丑,在版本庫(kù)爵卒。 |
場(chǎng)景3
Tips:
本來(lái)獨(dú)立開(kāi)發(fā)(暗爽),突然入職兩位新同志(搗亂的來(lái)了)撵彻,要和你共事這個(gè)項(xiàng)目钓株。之后項(xiàng)目經(jīng)理告訴你:小張!來(lái)陌僵,把代碼提交到遠(yuǎn)程倉(cāng)庫(kù)轴合,好讓新同事在新的代碼上更改。
將代碼推送 (push) 到遠(yuǎn)端碗短。
-
在文件內(nèi)右鍵空白處受葛,選擇 Git Push,出現(xiàn)如下彈框:
- 點(diǎn)擊ok,就可以了总滩。
場(chǎng)景4
Tips:
來(lái)了個(gè)新同事分單任務(wù)好像還不錯(cuò)纲堵。 今天他的任務(wù)不重,還沒(méi)下班就做完了咳秉,把代碼提上去了(提交到遠(yuǎn)程倉(cāng)庫(kù))婉支,還叮囑我把代碼更新一下。
-
右鍵空白處澜建,選擇 Git Pull向挖,出現(xiàn)如下彈框:
- 點(diǎn)擊ok,就可以更新至最新代碼炕舵。
場(chǎng)景5
Tips:
上午項(xiàng)目經(jīng)理分配了任務(wù)何之,大家又開(kāi)始操作起來(lái),然后這個(gè)同事又比我早做完了什么鬼不可能把式睢溶推!
,他瀟灑的提交代碼回家了奸攻,哼哧哼哧寫(xiě)好了可以提交了蒜危,拉取代碼pull
發(fā)現(xiàn)報(bào)錯(cuò)了肯定是他又寫(xiě)bug了
,應(yīng)該是修改了同一文件產(chǎn)生了沖突睹耐。
輪到我們操作的時(shí)候了:
- 將代碼提交(commit)到本地倉(cāng)庫(kù)
場(chǎng)景2
。 - pull代碼
場(chǎng)景4
硝训。 - pull下來(lái)之后發(fā)現(xiàn)沖突了响委。
- 解決沖突:噼里啪啦
記得去掉<<<<<<< HEAD ======= >>>>>>>xxxxxxx
。 - 將代碼提交(commit)到本地倉(cāng)庫(kù)
場(chǎng)景2
窖梁。 - push到遠(yuǎn)端
場(chǎng)景3
赘风。 - 修改結(jié)束瀟灑離場(chǎng)。
場(chǎng)景6
Tips:
開(kāi)發(fā)了一段時(shí)間纵刘,突然出現(xiàn)了一個(gè)重大BUG邀窃,領(lǐng)導(dǎo)要查明原因,就找到了我們兩個(gè)小開(kāi)發(fā)假哎,并的追問(wèn)這個(gè)“杰作”出自誰(shuí)手蛔翅,都不清楚也不承認(rèn)。第?天來(lái)了之后發(fā)現(xiàn)位谋,我的“小伙伴”被通告了,原來(lái)是經(jīng)理查了提交代碼的歷史記錄堰燎,查出是那位同事寫(xiě)的bug掏父。我就說(shuō)嘛,我怎么可能犯這種低級(jí)錯(cuò)誤秆剪。
查看git提交記錄
-
右鍵空白處 => TortoiseGit => show log赊淑,出現(xiàn)如下彈框:
文件記錄 - 通過(guò)日志爵政,可以很直觀的看到提交相關(guān)記錄。比如提交人陶缺、提交時(shí)間钾挟、提交了哪些文件等等。這些信息便于以后進(jìn)行文件對(duì)比饱岸。
場(chǎng)景7
Tips:
過(guò)了幾天掺出,公司又來(lái)了一位大數(shù)據(jù)工程師,來(lái)開(kāi)發(fā)咱們系統(tǒng)的報(bào)表模塊苫费;咱們開(kāi)發(fā)的項(xiàng)目需要新起分支來(lái)開(kāi)發(fā)這部分需求汤锨。
創(chuàng)建分?支
-
新建一個(gè)分支,右鍵 =>TortoiseGit=>Create Branch百框。
新建分支 - 右鍵闲礼,你會(huì)發(fā)現(xiàn)當(dāng)前的分支為master 分支,你需要切換到data分支。
-
切換分支铐维,右鍵 =>TortoiseGit=>Switch/Checkout柬泽。
切換分支 -
然后將它push上去。
場(chǎng)景8
Tips:
項(xiàng)目開(kāi)始進(jìn)行并行開(kāi)發(fā)流程嫁蛇,現(xiàn)在想上線(xiàn)一版锨并,將兩部分的功能在一 個(gè)項(xiàng)目里展示,那么就需要合并分支了棠众。
在合并分支前琳疏,一定要確認(rèn) data 分支上的代碼全部提交到本地版本庫(kù),或者別人開(kāi)發(fā)完你pull到了本地闸拿。
-
右鍵 => TortoiseGit => Merge空盼,選擇被合并的分支。
合并分支
場(chǎng)景9
Tips:
測(cè)試小伙伴們測(cè)試好這個(gè)流程感覺(jué)沒(méi)啥問(wèn)題新荤,決定在今晚上線(xiàn)揽趾,咱們想要在版本庫(kù)中讓他們記住這一版的狀態(tài),又不不想通過(guò)log查詢(xún)(畢竟log每天都更更新苛骨, log早就成千上萬(wàn)了)
給當(dāng)前版本tag標(biāo)簽
git tag -a v1.0.0 -m '測(cè)試部署 1.0.0'
git push origin --tags
// 查看標(biāo)簽
git tag
// 查看指定版本號(hào)
git show v1.0.0
場(chǎng)景10
Tips:
項(xiàng)目來(lái)來(lái)回回上線(xiàn)了了幾版篱瞎,產(chǎn)品經(jīng)理忽然發(fā)現(xiàn)后續(xù)版本的需求完全是畫(huà)蛇添足,讓我們回到第一版痒芝。
版本回退
-
查看提交日志, 確定回退的版本俐筋。
第一步
- 確定后就能回退到指定版本。
git命令三劍客
commit
pull
(有沖突解決沖突)
push