git

介紹

是一個開源的分佈式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

git的功能

協同修改
 多人並行不悖的修改服務器端的同一個文件。
數據備份
 不僅保存目錄和文件的當前狀態,還能夠保存每一個提交過的歷史狀態。
版本管理
 在保存每一個版本的文件信息的時候要做到不保存重複數據,以節約存儲空 間,提高運行效率。這方面 SVN 採用的是增量式管理的方式,而 Git 採取了文 件系統快照的方式。
權限控制
 對團隊中參與開發的人員進行權限控制。
 對團隊外開發者貢獻的代碼進行審覈——Git 獨有。
歷史記錄
 查看修改人、修改時間、修改內容、日誌信息。
 將本地文件恢復到某一個歷史狀態。
分支管理
 允許開發團隊在工作過程中多條生產線同時推進任務,進一步提高效率。

版本控制工具分類

集中式版本控制工具
CVS、SVN、VSS……
分佈式版本控制工具
Git、Mercurial、Bazaar、Darcs……

git的優勢

 大部分操作在本地完成,不需要聯網
 完整性保證
 儘可能添加數據而不是刪除或修改數據
 分支操作非常快捷流暢(基於指針實現,因此創建分支很快)
 與 Linux 命令全面兼容
基於行情來管理文件的變動

git本地分區

git本地分爲三個區域:
工作區—>暫存區---->本地庫
工作區:就是我們寫代碼的區域
暫存區:臨時存儲區
本地庫:本地的倉庫,如果要推送到遠端 需要先提交到本地庫
git本地分區模型

git常用命令

本地庫初始化

git  add  
此命令會在當前目錄創建一個.git的隱藏文件夾,存放git用來管理版本的文件

設置簽名

用來區分不同開發人員的身份,這裏設置的簽名和登陸遠程倉庫的賬號、密碼沒有任何關係。

設置系統級別的簽名,對當前系統有效;信息保存位置:~/.gitconfig 文件
git config --global user.name "zhangsan"
git config --global user.email "[email protected]"
設置項目級別簽名:項目級別的簽名只在當前項目有效;信息保存位置:./.git/config 文件
git config  user.name "zhangsan"
git config  user.email "[email protected]"
優先級
就近原則:項目級別優先於系統用戶級別,二者都有時採用項目級別 的簽名
如果只有系統用戶級別的簽名,就以系統用戶級別的簽名爲準
二者都沒有不允許

基本操作

git status 查看工作區、暫存區狀態
git add【fileName】 將工作區的"新建/修改"添加到暫存區
git commit -m "commit message"  [fileName] 將暫存區的修改提交到本地庫
git commit -am “commit message”   直接將工作區的文件提交到本地庫

查看本地的歷史版本記錄
git log  多行顯示
git log --pretty=oneline 單行顯示
6d3042d38f0536de3b07e1d578f366ad62f8c625 (HEAD -> master) my third commit
2218863d35feca7e4d2984c6454577ed3afb730a my sencond commit.good.txt modify
fe04652cb9a0bf031ce444e3d1381f3f9fdd118d my first commit.create new file good.txt

git log --oneline 
6d3042d (HEAD -> master) my third commit
2218863 my sencond commit.good.txt modify
fe04652 my first commit.create new file good.txt

git reflog  單行顯示,HEAD@{移動到當前版本需要多少步}
6d3042d (HEAD -> master) HEAD@{0}: commit: my third commit
2218863 HEAD@{1}: commit: my sencond commit.good.txt modify
fe04652 HEAD@{2}: commit (initial): my first commit.create new file good.txt

版本穿梭

基於索引值操作[推薦]
 	git reset --hard [局部索引值]
 	git reset --hard a6ace91
使用^符號:只能後退
 	git reset --hard HEAD^
 	注:一個^表示後退一步,n 個表示後退 n 步
使用~符號:只能後退
 	git reset --hard HEAD~n
 	注:表示後退 n 步

reset 命令的三個參數對比

--soft 參數
僅僅在本地庫移動 HEAD 指針

--mixed 參數
1在本地庫移動 HEAD 指針
2重置暫存區

--hard 參數
在本地庫移動 HEAD 指針
重置暫存區
重置工作區

文件比較

git diff [文件名]
	將工作區中的文件和暫存區進行比較
git diff [本地庫中歷史版本] [文件名]
 	將工作區中的文件和本地庫歷史記錄比較
 	不帶文件名比較多個文件

分支操作

分支的好處
同時並行推進多個功能開發,提高開發效率
各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任 何影響。失敗的分支刪除重新開始即可。

 	創建分支
git branch [分支名]

 	查看分支
git branch -v

 	切換分支
git checkout [分支名]

 	合併分支
 	第一步:切換到接受修改的分支(被合併,增加新內容)上
git checkout [被合併分支名]
第二步:執行 merge 命令
git merge [有新內容分支名]

衝突的解決
 	第一步:編輯文件,刪除特殊符號
 	第二步:把文件修改到滿意的程度,保存退出
 	第三步:git add [文件名]
 	第四步:git commit -m "日誌信息"
 	注意:此時 commit 一定不能帶具體文件名

刪除本地分支
git branch -d 分支名
git branch -D 分支名 強制刪除
刪除遠程分支
git push origin --delete 分支名 或
git push origin :分支名

遠程庫操作

創建遠程庫地址別名
git remote -v 查看當前所有遠程地址別名
git remote add [別名] [遠程地址]

推送
git push [遠程庫別名] [分支名]

克隆
git  clone 遠程地址

拉取
git pull [遠程庫地址別名] [遠程分支名]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章