版本控制是一種記錄一個(gè)或若個(gè)文件內(nèi)容變化秃踩,以便將來查詢特定版本修訂情況的系統(tǒng)艾猜。常見的版本控制有本地版本控制系統(tǒng)买喧、集中式版本控制系統(tǒng)(SVN)、分布式版本控制系統(tǒng)(Git)匆赃。
集中式版本控制系統(tǒng)
版本庫是集中存放在中央服務(wù)器的淤毛,所以每次操作的時(shí)候都要先從中央服務(wù)器取得最新的版本,然后操作(修改)完炸庞,再推送給中央服務(wù)器钱床,下次再改的時(shí)候,再?gòu)闹醒敕?wù)器取埠居。
弊端:版本庫存放在服務(wù)器上查牌,服務(wù)器出現(xiàn)問題,就不能干活了滥壕;每次都要服務(wù)器上傳送纸颜,所以需要聯(lián)網(wǎng)才能工作。
分布式版本控制系統(tǒng)
每個(gè)人的電腦上都有一個(gè)完整的版本庫(倉庫)绎橘,操作完先提交到本地的自己倉庫胁孙,如果沒有什么問題的話,再提交到遠(yuǎn)程倉庫称鳞。
優(yōu)點(diǎn):斷網(wǎng)時(shí)涮较,可以提交到本地倉庫,等有網(wǎng)再提交遠(yuǎn)程倉庫冈止,不影響工作狂票;出現(xiàn)問題時(shí),只要有一臺(tái)機(jī)器沒問題熙暴,就可以完好的拷貝出來闺属。
Git是一種分布式版本控制系統(tǒng)。
三種狀態(tài):
已提交(committed):該文件已經(jīng)被安全地保存在本地?cái)?shù)據(jù)庫中周霉。
已修改(modified):修改某個(gè)文件掂器,但還沒有提交保存。
已暫存(staged):把已修改的文件放在下次要提交時(shí)保存的清單中俱箱。
簡(jiǎn)單操作
查看當(dāng)前文件狀態(tài):git status
untracked files:未跟蹤文件(還沒添加到暫存區(qū))
changes to be commmited:已暫存
changes not staged for commit:已跟蹤文件的內(nèi)容發(fā)生了變化国瓮,但還沒有放到暫存區(qū)。
把當(dāng)前目錄下的新增和修改添加到暫存區(qū):git add .
把暫存區(qū)的更新提交到本地庫:git commit -am “add file”
把本地倉庫推送到遠(yuǎn)程倉庫的master分支:git push origin master
把遠(yuǎn)程倉庫的變動(dòng)更新合并到本地倉庫:git pull
當(dāng)遠(yuǎn)程倉庫發(fā)生變動(dòng)時(shí),在本地倉庫添加修改文件乃摹,提交后厂财,推送到遠(yuǎn)程倉庫會(huì)報(bào)錯(cuò),因?yàn)檫h(yuǎn)程倉庫和本地倉庫沒有一致峡懈,所以要把遠(yuǎn)程倉庫的變動(dòng)更新合并到本地倉庫。
在本地倉庫對(duì)文件做修改与斤、刪除之前肪康,要先把遠(yuǎn)程倉庫的變動(dòng)更新合并到本地倉庫git pull;再對(duì)本地倉庫進(jìn)行修改或者刪除
vim a.md 修改文件
git add . 添加到暫存區(qū)
git commit -am “modified a” 把暫存區(qū)的更新提交到本地倉庫
git push origin master 推送到遠(yuǎn)程倉庫master分支
rm -rf b.md 刪除文件
vim a.md 修改文件
git add . 添加到暫存區(qū)
git commit -am “modified a” 把暫存區(qū)的更新提交到本地倉庫
git push origin master 推送到遠(yuǎn)程倉庫master分支
本地創(chuàng)建一個(gè)git項(xiàng)目推送到遠(yuǎn)程空倉庫
mkdir blogtest 創(chuàng)建空目錄
cd blogtest
touch README.md
git init 把blogtest初始化為git倉庫(多了隱藏文件.git)
git add .
git commit -am "init information"
git remote add origin git@github.com:lwq945/blogtest.git (添加遠(yuǎn)程倉庫的名字為origin撩穿,遠(yuǎn)程庫的名字可以取別的磷支,git默認(rèn)是origin)
git push -u origin master(第一次推送后用git push origin master)
也可刪除原倉庫的名字
git remove add abc git@github.com:lwq945/blogtest.git
git remote remove abc
修改origin標(biāo)簽對(duì)應(yīng)的地址
git remote set-url origin git@github.com:lwq945/XXX.git
分支操作
查看所有所有分支
git branch -a
創(chuàng)建本地庫dev分支
git branch dev
切換到dev分支
git checkout dev
在dev分支創(chuàng)建文件
touch b.md
git add .
git commit -am "add b.md"
推送到origin地址的遠(yuǎn)程dev分支上
git push origin dev
切換到master
git checkout master
把dev分支的內(nèi)容合并到當(dāng)前分支(master)上(合并完master和dev的內(nèi)容一樣)
git merge dev
沖突
當(dāng)自己和別人改同一個(gè)文件的同一個(gè)地方,在執(zhí)行g(shù)it pull更新本地合并時(shí)會(huì)出現(xiàn)沖突食寡。
解決
手動(dòng)修改沖突文件
重新提交