一、集中式版本控制工具:SVN(版本控制集中在服務器端,會有單點故障風險);git
二、分佈式版本控制工具:Git;算法
三、Git簡史vim
Talk is cheap, show me the code.(Linus)緩存
四、https://git-scm.com/ 官網下載安裝git服務器
(後面均使用默認設置);編輯器
1.Git的結構與GitHub的關係分佈式
二、Git&GitHub---本地庫與遠程庫的交互方式工具
(1)團隊內的合做命令行
(2)跨團隊協做版本控制
(項目級別信息保存位置顯示)
(系統用戶級別信息保存的位置);
(第二句表示本地庫中沒有東西,第三句表示暫存區中沒有什麼可提交的。);
(用vim thy.txt新建了一個文本文件)
(行末換行符進行改變,將文件添加到緩存區);
(文件已經添加至緩存區了,可用提示命令從緩存區撤回);
(git commit thy.txt提交以後,要求對此次改變輸入提交信息);
(master根提交,「版本號」,一個文件,一行增長,建立了文件)
(緩存區中沒什麼提交的,工做樹是乾淨的);
(對thy.txt進行了修改,用add命令更新到暫存區,或用checkout在你的工做目錄裏取消修改,暫存區中沒沒有可提交的修改,用add和commit添加到暫存區並提交,或直接提交);
(使用add後顯示status,而後提交,加上-m能夠不用進入vim編輯器寫提交信息);
(commit後面是此次提交的索引,通過哈希算法算出來的,head是指針,指向當前版本,版本穿梭就是移動改指針)
(三種查看歷史記錄,reflog能顯示全部版本,oneline只能顯示過去版本,索引號選中自動複製)
(前進後退都用這個命令)
(一個^表示後退一個版本,2個後退兩個,一次類推,太多了能夠用~3表示後退三個版本)
(用HEAD命令使三個區保持一致)
(找回永久刪除的文件,回退到過去版本)
(衝突,當合並時,發現合併的兩個分支被修改了同一個文件的相同位置,就會產生衝突,git不知道要保留哪個,因此會產生人工合併取捨);
(哈希算法能夠用來檢驗文件傳輸是否有損,哇,之前不知道還有這做用0.0);
(版本管理是用哈希將每次的提交生成相應的哈希值,而後版本的管理就是一條鏈表,而後指針在上面移動。)
(建立分支實際上是建立一個指針,而不是真的將文件再複製一遍,分支的切換是移動head指針,因此效率很高!)