git是一種版本控制系統,通俗來說,就是幫咱們把文件備份。但git版本控制系統的功能遠不止備份這麼簡單,總的來講它具備以下特色:html
GIT並非惟一的版本控制系統,除了GIT以外,經常使用的版本控制管理系統還有SVN,鑑於他們實現機制的不同,一般咱們稱GIT爲分佈式版本管理系統,SVN是集中式版本管理系統。
那麼分佈式和集中式版本控制系統有什麼不同呢?git
git的工做是分區的,經過調用git相關的命令,咱們在每一個區能夠切換,git常有三種區,分別是:github
工做區就是咱們本地電腦工做中使用的那部分代碼,當咱們使用命令git add命令把代碼添加以後,咱們的代碼就提交到暫存區了,使用了git commit 命令,咱們的代碼就提交到歷史區了。web
一、打印當前文件目錄緩存
pwd
二、查看git配置服務器
git config --list
三、配置全局的用戶信息分佈式
git config --globle user.name "mmcai" git config --globle user.email "xx@126.com"
四、配置當前目錄下git的用戶信息學習
git config user.name "mmcai" git config user.email "xxx@126.com"
五、初始化git——告訴那個文件夾被git所管理網站
git init
六、遞歸強制刪除文件夾url
rm -rf xxx -r 遞歸 -f 強制
七、其餘
cd 切換文件目錄 mkdir 在指定目錄下建立文件夾 touch 在指定文件目錄下建立文件 cat 查看文件內容 ls -al 顯示當前目錄下全部的文件內容
八、vi 編輯相關命令
vi <文件名> i/u 切換到編輯模式 dd 刪除當前行 ESC 退出編輯模式 :wq 保存文件並退出 :q! 強制退出
九、直接把工做區的內容提交到歷史區
git commit -a -m '註釋' 前提條件是,你必須使用git add 命令操做過一次
上面咱們說到GIT系統當中有三個區:工做區,暫存區,歷史區,咱們不能跨區操做,必須先把文件添加到暫存區以後,才能提交到歷史區。若是把代碼從工做區提交到暫存區,或者把暫存區的內容提交到歷史區,代碼只是copy了一份存到另外的空間,當前(工做區)當中的內容,不會發生變化。
工做區
當咱們使用git init 命令行支行,咱們當前就處在工做區
git init
暫存區
在工做區下,咱們執行以下命令,就把咱們當前的文件,提交到了暫存區
git add ./-A
既然能添加,固然也能刪除暫存區,使用以下命令,咱們能夠刪除暫存區裏面的內容
git rm --cached 文件名
歷史區
使用命令git commit 就把文件從暫存區
git commit -m '描述你這次提交到歷史區作的修改' -m 參數不能省略,必須填寫
日誌
查看git提交到歷史區的歷史狀態,最新提交的內容在日誌的最上面展現
git log
狀態
查看當前git所在那個區?工做區,暫存區,歷史區
git status
一般爲了查看每一個區的內容有何不一樣,咱們能夠經過git diff命令來實現,咱們上面知道,git有三個區,因此比較的狀況也會分爲幾種狀況:
git diff 工做區和暫存區比較 git diff <master> 工做區和歷史區比較 gif diff --cached 工做區和暫存區比較
撤銷
當咱們工做區的代碼,不當心或者寫的比較不理想的狀況下,咱們想把本次修改的內容進行撤銷的時候,GIT能夠幫我實現。撤銷分幾種狀況:
一、從暫存區回滾
二、若是暫存區也是須要回滾的,須要從上一層暫存區進行回滾
三、若是不當心提交到歷史區,須要從上一層歷史區中進行回滾
從暫存區回滾:
git checkout .
從暫存區的上一層進行回滾
git reset HEAD . git checkout .
從歷史區的上一層進行回滾
git reset --hard <版本號,版本號經過git log查看> 該操做會把工做區和暫存區所有覆蓋
若是從歷史區的上一層回滾以後,想再次回到以前的歷史區怎麼辦?
git reflog 查看所有日誌,獲取版本ID git reset --hard <版本ID> 只要你知道版本ID,你就可使用git reset 回滾到任何版本
.表示當前目錄下的全部文件
分支的使用一般會有如下幾種狀況:
查看分支
git branch
建立分支
git branch <分支名>
切換分支
git checkout <分支名>
建立並切換分支
git checkout -b <分支名>
刪除分支
git branch -D <分支名> 刪除分支時,用戶不能在當前分支上
當您在一個分支下建立了新的文件時,若是沒有把文件提交到歷史區,全部的分支下都能看到該文件。同時當你在一個分支下對文件進行了修改以後,在你沒有把它提交到暫存區或者歷史區以前,你切換分支會提示不容許,這個時候能夠經過以下命令實現切換
git stash 暫存文件 git stash pop 還原暫存文件
工做流程是:分支1(沒有提交到暫存區或歷史區)——> git stash 暫存文件——>分支2——>git stash pop——>分支1
分支合併
合併分支的時候,確保當前分支時主幹,不然,就把主幹合併到了其它分支上去了
git merge <分支名>
查看分支狀況
git log --graph --online
雖然git是分佈式的,但咱們每每仍是須要一箇中央服務器,這個服務器的主要任務能夠理解成是咱們的代碼倉庫。這個倉庫咱們叫作遠程倉庫,一般咱們用github或者國內的gitee。上面咱們說git當中有三個區:工做區,暫存區,歷史區。遠程倉庫只會保存咱們歷史區當中的內容,因此,你的代碼git commit 命令以後,才能推送到遠程倉庫當中。
遠程倉庫配置
要想把代碼提交到遠程倉庫,通常咱們須要有遠程倉庫相關的帳號,並且要設置相關的祕鑰。
添加遠程倉庫
git remote add <origin(別名)> <url>
刪除遠程倉庫
git remote rm <別名>
直接設置遠程倉庫
git remote set-url <別名> <url>
查看遠程倉庫地址
git remote -v
拉去線上代碼
git pull
克隆遠程倉庫到本地
git clone <url>
推送到遠程倉庫
git push -u origin master -u 設置默認推送的主機,下次推送的時候,不用寫倉庫的名字,能夠直接提交
gh-pages
在GitHub當中,咱們建立一個gh-pages的分支,能夠發佈咱們的靜態頁面,做爲咱們項目的一個介紹網站。
咱們能夠在github倉庫的設置裏面,找到GitHub Pages 主體,查看咱們項目可被訪問的web靜態頁面的url地址。
注意
代碼fork-pull
github上面,看到一個比較不錯的項目,想要copy到本身的倉庫,能夠經過fork的操做,把別人倉庫裏面的項目,克隆到本身遠程倉庫當中。當你以爲別人的代碼寫的很差的時候,能夠經過pull requests 把你的代碼提交到fork的項目當中。
以上內容,算是個人學習筆記,初次以外,涉及到git的問題,可能還有不少,好比說想把一個項目同時提交到兩個倉庫(GitHub和gitee),解決衝突等,但願有機會咱們能一塊兒討論討論。