SVN是集中式版本控制工具 git是分佈式版本控制工具
工作區(寫代碼) git add -》 暫存區(臨時存儲數據 可撤回) git commit -> 本地庫 (記錄歷史版本 不可撤回)
**
使用說明書
svn沒有版本庫 而git有 這是最大的區別
**
(1)本地庫初始化 git init 生成 .git 目錄
(2)設置簽名以區別不同開發人員
僅在當前本地庫有效:
git config user.name xxxx
git config user.email cccc
在當前操作系統都有效:
git config --global user.name xxxx
git config --global cccccc
項目級別優先
做完上述操作之後會在 用戶家目錄的 .gitconfig 文件裏寫好你的配置
(3)git status 顯示你的狀態
no commits yet 表示本地庫沒東西
nothing to commit 暫存區沒東西
git add 進行對文件的追蹤並且將此文件放到暫存區裏面
git rm --cached 從暫存區中取消
git commit -m "message"存儲到本地庫
(4)git log 查看歷史記錄(每次提交都會有一條歷史記錄) q退出
序列號是hash值 作爲版本號的作用
HEAD表示指向記錄的指針
(5)git log --pretty==oneline 用精簡的方式顯示歷史記錄
git log --oneline在pretty的基礎上只顯示hash值的一部分(但是這一部分也是可以精確定位一條記錄的)(只顯示到目前最新版本的記錄 比HEAD版本更新的版本看不到)
git reflog 可顯示移動到所需要的歷史版本所需要的步數(會顯示完整的歷史記錄)
(6)版本的前進和後退
git reset --hard hash版本值
git reset --hard HEAD~n 後退n個版本
**
hard soft mixed三個參數
這三個參數分別有不同的操作對象
**
soft 本地庫
mixed 本地庫 暫存區
hard 本地庫 暫存區 工作區
**
刪除文件後恢復操作
**
1工作區刪除文件的操作還沒有添加到暫存區 : git checkout -- <file>
2刪除操作添加到暫存區 但沒到本地庫:git reset --hard HEAD (因爲HEAD現在指向的本地庫的歷史記錄並沒有被刪除)
3刪除操作提交到本地庫了 : git reset --hard HEAD 指向被刪除文件還存在時的歷史記錄
**
比較文件的差異
**
git diff 文件 比較工作區的文件和暫存區文件的區別(以行爲單位)
git diff HAED^^^ 文件 比較工作區的文件和本地庫文件的區別(以行爲單位)
**
分支管理
使用多條線同時推進多個任務 每個分支都有自己的指針指向記錄 剛創建出來的分支內容和主幹是一樣 修改分支不會影響主幹
**
git branch 創建分支 (多創建一個指針指向當前版本)
git branch -v 查看分支
git checkout 切換分支
合併分支:
(1)git checkout 切換到接收修改的分支
(2)git merge 有新內容的分支
**分支衝突**
把衝突文件修改好了之後就git commit -m "message" 進行提交 不可以加文件名
在從另一分支把文件同步過來
**
git基本的原理
**
(1)用hash來保證版本的一致
(2)保存版本的機制:
SVN:集中式的只有一個完整的中央服務器 將保存的信息看作是一組基本的文件和每個文件隨時間逐步累積的差異 存儲 文件名 版本 多少行 每行什麼內容 修改的內容 當你需要的時候把原始的內容和更改的內容拼一起 即每個版本只保存你改變了的一點點
GIT:每次更新的時候都會對當前全部文件製作一個快照並保存這個索引 沒有修改的文件只是保留一個鏈接指向之前存儲的文件
**
github
**
團隊內合作 :創建遠程庫後
(1)git remote add 別名 遠程庫地址
git remote -v 查看
git push 別名 分支名
(2)其他成員:
git clone 把遠程庫下載並且初始化本地庫 遠程庫地址所擁有的別名也有
(3)把遠程庫的修改拉取到本地:
pull : 等於fetch + merge 如果只是想單獨拉取下來而不進行合併 可以只執行fetch
git pull origin master
跨團隊合作:
(1)在給github 上登陸別的團隊的遠程庫地址 點擊fork 會創造出自己的遠程庫 還需要clone成本地庫 push
(2)pull request等待別人審覈 merge 到自己的遠程庫
**SSH登陸**
$ cd ~家目錄
$ rm -rvf .ssh刪除.ssh目錄
$ ssh-keygen -t rsa -C 郵箱運行命令生成.ssh密鑰目錄
$ cd .ssh查看文件列表
$ cat id_rsa.pub複製id_rsa.pub文件內容,登錄GitHub,點擊用戶頭像→Settings→SSH and GPG keys New SSH Key 輸入複製的密鑰信息
git remote add origin_ssh [email protected]:用戶名/git名字.git 創建遠程地址別名
推送文件進行測試