1.git簡介:git
- 特色:協同修改、數據備份、版本管理(文件系統快照)、權限控制、歷史記錄、分支管理 - 優點:大部分操做本地完成、完整性保證(hash算法)、儘量添加數據而不是刪除或修改數據、分支操做便捷流暢、兼容Linxu命令 - git結構:工做區(寫代碼) > git add > 暫存區(臨時存儲) > git commit > 本地庫(歷史版本) > 遠程庫 - git和代碼託管中心[維護遠程倉庫]:局域網環境下-gitlab服務器(本身搭);外網環境-github、碼雲 - 團隊協做方式: -- 團隊內部協做[git push git clone git push git pull] -- 跨團隊協做[fork(複製一份遠程庫)>clone>push>pull request>審覈>merge]
2.git命令行:github
-本地庫操做 -- 本地庫初始化: --- git init > .git目錄:存放本地庫相關的文件和子目錄,不要刪除,儘可能不要修改 --- 設置簽名:用戶名、Email地址(和遠程庫帳號密碼沒有任務關係) 項目級別/倉庫級別:僅在當前本地庫有效 git config user.name/user.email 信息保存位置:.git/config 系統級別:登陸當前操做系統的範圍 git config --global 信息保存位置:~/.gitconfig 級別優先級:就近原則 項目 > 系統 -- 基本操做(shift+ins=paste): --- git help command:查看本地文檔幫助 --- git status:查看工做區、暫存區狀態 # --- git add :工做區修改 > 暫存區 3 --- git rm --cached:從暫存區撤銷文件 --- git commit $file > vim 提示輸入提交信息 git commit $file -m "First commit new file:test.txt" # --- git log:查看歷史版本信息 commit:hash字符串標識一次歷史提交;HEAD指針:指向最新的提交 git log --pretty=oneline 提交信息簡潔的顯示在一行 git log --oneline git reflog --- git reset --hard $fe8986c:基於索引的回退 git reset --hard HEAD^:只能後退 ^:1 step git reset --hard HEAD~3:只能後退,後退3部 --hard:本地庫移動HEAD指針、重置暫存區、重置工做區 --soft:僅僅在本地庫移動HEAD指針 --mixed:在本地庫移動HEAD指針,重置暫存區 --- git reset --hard [指針位置] 經過歷史記錄進行版本控制,刪除文件並找回;前提是文件存在時的狀態提交到了本地庫 --- git diff:比較文件差別 git diff [file_name]:工做區和暫存區文件比較 git diff [history_version] [file_name]:工做區和本地庫文件比較 git diff HEAD:全部文件的改變 -- 分支管理: --- 版本控制過程當中,使用多條線同時推動多個任務 --- 優勢:並行推動功能開發,提升效率;某個分支開發失敗,不會影響其餘分支,刪除重寫開始便可. --- git branch -v:查看全部分支 --- git branch branch_name:建立分支 --- git checkout branch_name:切換分支 --- 合併分支 1.git checkout [branch_name]:切換到接受修改的分支(master) 2.git merge [branch_name]:執行merge命令,合併分支(修改的分支) 3.解決衝突:多個分支修改同一個文件的同一個地方 衝突的表現:<<<<<HEAD當前分支內容 =====另外一分支內容>>>>>>分支名 衝突的解決: 1>編輯文件,刪除特殊符號; 2>把文件修改到滿意的程度,保存退出; 3>git add [file_name]; 4>git commit -m "log message". [commit不能帶文件名] --- 刪除分支: 1.git checkout [other branch_name]:切換到別的分支 2.git branch -d [delete branch_name]:刪除分支 git branch -D [.....]:強制刪除分支 3.git push origin --delete [delete branch_name]:刪除遠程分支 4.git fetch origin common_branch:common_branch:從公用倉庫fetch代碼 5.git checkout common_branch:切換分支 -- 遠程庫操做 --- 建立遠程庫: 0.本地建立文件夾; 1.網頁操做; 2.git remote -v [查看遠程庫] git remote add origin https://github.com/scott-teng/gitpro.git [新建別名origin=url] 3.git push origin master --- git clone:做用一、完整的把遠程庫下載到本地;二、建立origin遠程地址別名;三、初始化本地庫. --- 邀請成員加入團隊 --- git push:提交 --- git pull[遠程地址/遠程分支]=git fetch[remote repository][remote branch] + git merge[remote別名/遠程分支名] git fetch:只拉取,不合並; git fetch origin master git checkout origin/master git merge:合併 git merge origin/master --- 解決衝突:非最新,不能推送,必須先拉取;若進入衝突狀態,先解決衝突,在推送. --- debug:HEAD detached from XXX 遊標脫離問題解決 ---fork:跨團隊協做 -- git workflow:集中式、分支、fork --- 分支:master、develop、hotfix、release、feature
3.git圖形化界面算法
- gitk
4.git基本原理:vim
- 哈希:一系列加密算法,加密強度不一樣,但存在共同點: 1>加密結果長度固定; 2>算法肯定,輸入數據肯定,輸出數據不變; 3>算法肯定,輸入變化,輸出變化,且變化較大; 4>不可逆; 5>可用來驗證文件,Git底層採用SHA-1算法來跟蹤歷史記錄; - git:快照流,每次提交更新時對當前所有文件製做一個快照,未更改的文件保存一個指針;