前言
本文目的是通過記錄Git的知識點讓自己印象更深刻同時分享給大家。當然文中可能會有一些錯誤损痰,也希望大家能指出問題福侈!我也是通過學習Git教程后,總結(jié)了git的介紹以及日常開發(fā)中常用的命令和步驟卢未。
一.Git介紹
Git是分布式版本控制系統(tǒng)肪凛,它相較集中式版本控制系統(tǒng)有什么優(yōu)點?如下圖所示:
從上圖可以看出辽社,集中式的版本庫存放在“中央服務器”伟墙,當某個人干完活之后推送到版本庫,然后其他人提交時滴铅,先更新下來解決沖突后再提交戳葵。這其實基本能滿足開發(fā)的需求,但是集中式還有個缺點就是必須聯(lián)網(wǎng)才能工作汉匙,并且提交大文件需要一定的時間拱烁。分布式就是為了解決如何在沒網(wǎng)的時候開發(fā)生蚁?如何能提高開發(fā)效率?使用git開發(fā)時戏自,每個人的電腦都是一個版本庫邦投,所以不用考慮聯(lián)網(wǎng)問題,只有當要提交到遠程版本庫時才需要聯(lián)網(wǎng)擅笔,并且提交的速度遠遠超過其他版本控制系統(tǒng)尼摹。當然就想圖中看到的一樣,每個人的電腦不用經(jīng)過遠程版本庫就可以推送給對方(前提是同一局域網(wǎng))剂娄,但是這個比較麻煩蠢涝,通常都是用遠程版本庫推送的。
這里簡單介紹下Git的工作原理 :
- 工作區(qū):你開發(fā)時新增阅懦、修改的文件全部在工作區(qū)和二,如果沒有使用命令之前,它是不會提交到本地版本庫的耳胎。
- 版本庫:版本庫其實是在你那個項目目錄下的一個隱藏文件夾(.git)惯吕,它里面包括了暫存區(qū)(stage)和默認主分支(master)。
- 暫存區(qū)(stage):當工作區(qū)的文件修改后 怕午,你可以用命令git add提交到暫存區(qū)废登,現(xiàn)在還沒有到master分支上,也就是說你現(xiàn)在的版本庫其實和遠程版本庫還是一樣的郁惜。
- 主分支(master):暫存區(qū)的內(nèi)容通過git commit提交到主分支堡距,這時候版本庫和遠程版本庫已經(jīng)不同了。
當然分支是一個非常強大的功能兆蕉,它可以創(chuàng)建多個分支羽戒。分支的作用是:假設你準備開發(fā)一個新功能,但是需要兩周才能完成虎韵,第一周你寫了50%的代碼易稠,如果立刻提交,由于代碼還沒寫完包蓝,不完整的代碼庫會導致別人不能干活了驶社。如果等代碼全部寫完再一次提交,又存在丟失每天進度的巨大風險〔馕現(xiàn)在有了分支亡电,就不用怕了。你創(chuàng)建了一個屬于你自己的分支绳泉,別人看不到逊抡,還繼續(xù)在原來的分支上正常工作,而你在自己的分支上干活零酪,想提交就提交冒嫡,直到開發(fā)完畢后,再一次性合并到原來的分支上四苇,這樣孝凌,既安全,又不影響別人工作月腋。
二.Git常用命令
1.提交過程
git status(查看當前分支狀態(tài))
git add xxx(提交該文件到暫存區(qū))
git commit -m “xxx”(提交暫存區(qū)的所有內(nèi)容到當前分支并注釋)
git pull origin xxx(更新遠程版本庫到本地)
git push origin xxx(提交到遠程版本庫)
2.分支命令
git branch(查看所有分支)
git branch <name>(創(chuàng)建分支)
git checkout <name>(切換分支)
git checkout -b <name>(創(chuàng)建+切換分支)
git merge <name>(合并某分支到當前分支)
git branch -d <name>(刪除分支)
git log --graph(查看分支合并圖)
3.版本庫相關命令
git init(創(chuàng)建本地版本庫)
git remote add origin git@github.com:xxxx/xxx.git(關聯(lián)本地和遠程倉庫)
git clone git@github.com: xxxx/xxx.git(克隆遠程倉庫)
git pull origin xxx(更新遠程版本庫)
git push origin xxx(提交到遠程版本庫)
git remote -v(查看遠程庫信息)
4.工作區(qū)命令
git stash(儲藏工作區(qū))
git stash pop(恢復工作區(qū))
5.撤銷修改
git checkout --xxx(丟棄工作區(qū)某文件的修改)
git reset HEAD xxx(丟棄暫存區(qū)某文件的修改)
git reset --hard commit_id(回退到指定的版本號)
6.標簽管理
git tag(查看所有標簽)
git tag <name>(當前HEAD上打標簽)
git tag <name> commit_id(某個版本打標簽)
git push origin <tagname>(推送標簽)
git push origin --tags(推送全部未推送標簽)
git tag -d <tagname>(刪除本地標簽)
7.查看命令:
git log(--pretty=online)(查看提交日志)
git reflog(查看命令歷史)
8.配置命令(第一次使用Git時)
ssh-keygen -t rsa -C "email@example.com"(如果用戶主目錄下沒有.ssh文件夾則創(chuàng)建sshkey)
git config --global user.name "your name"(配置用戶名)
git config --global user.email "email@example.com"(配置郵箱)
三.日常開發(fā)注意點
clone注意點:如果一個項目有兩個分支蟀架,clone下來只有master,需要git checkout -b <name> origin/<name>(創(chuàng)建+切換)到另一個分支榆骚。
分支使用策略:
最好不要在master分支上開發(fā)片拍,需求如果是開發(fā)新功能則創(chuàng)建feature分支,如果是修改bug則創(chuàng)建bug分支妓肢,最后將修改完的分支merge到主分支上進行commit捌省。此時有可能出現(xiàn)一種情況:在feature分支上修改時,緊急需要修改bug碉钠,而feature還未開發(fā)完纲缓,這時無法checkout到master分支(因為工作區(qū)有修改的內(nèi)容),使用git stash儲藏再切換到master上創(chuàng)建新的bug分支喊废。完整的工作流程:
0.git clone git@github.com: xxxx/xxx.git(克隆遠程倉庫)
1.git checkout -b feature(當前分支是master)
2.在feature分支上修改文件
3.git add <name>(這里不建議用命令行祝高,配合AS使用效果更好)
4.git commit -m “xxx”(提交本地版本庫并注釋)
5.git checkout master-->git merge feature(切換分支并且合并到master分支上)
6.git pull origin master(更新遠程版本庫并合并)
7.如果有沖突則解決沖突
8.git push origin master
總結(jié)
本篇簡單介紹了git的工作原理、常用命令以及日常開發(fā)的注意點污筷。當然實踐是最重要的工闺,其實我自己對git的原理也是大概了解,你只要了解它是怎么工作的瓣蛀,然后通過實踐那些命令以及記錄在開發(fā)的時候遇到的問題斤寂,最后把它梳理成操作流程后就可以對git熟練使用了。后續(xù)開發(fā)過程中如果我用到新的命令以及注意事項會持續(xù)更新此文章揪惦。