分佈式版本控制之git

git

版本控制

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:快照流,每次提交更新時對當前所有文件製做一個快照,未更改的文件保存一個指針;
相關文章
相關標籤/搜索