shellhtml
1.什麼是shell?node
在計算機中shell俗稱殼,用來區別Kernel(核),是指"提供使用者使用界面的軟件",(命令解析器),它相似於DOS下的command和後來的cmd.exe,linux
用來接收用戶命令,而後調用相應的應用程序.git
2shell分類github
1.圖形界面shell: 經過提供有好的可視化界面,調用相應的應用程序,如:windows系列操做系統,Linux系統上的圖形化應用程序GNOME,KDE等;shell
2.命令行shell : 經過鍵盤輸入特定的命令的方式,調用相應的應用程序,如windows系統的cmd.exe,Windows PoweShell,linux系統的Bourne shell,Bourne Again shell(bash)等;數據庫
1.3 認識bash和這個shellwindows
在window系統下使用bash,須要一個軟件,這個軟件模擬集成了bash大部分命令;bash
各個shell的功能都差很少,Linux默認使用bash,服務器
1. bash命令格式
命令 [-options][參數], tar zxvf demo.tar.gz
查看幫助: 命令 --help
2 bash 常見命令
pwd 查看當前目錄
cd 切換目錄
ls 查看當前目錄下內容 ls -al
mkdir 建立目錄 mkdir wjx
touch 建立文件 touch index.html
cat 查看文件所有內容 cat index.html
more less 查看文件 more/etc/passwd/ ,less/etc/passwd
rm 刪除文件 rm index.html , rm -rf blog 遞歸刪除
rmdir 刪除文件夾,只能刪除空文件夾,不經常使用
mv 移動文件或者重命名 如: mv index.html ./demo/index.html
cp 複製文件 cp index.html ./demo/index.html
head 查看文件前幾行 head -5 index.html
tail 查看文件後幾行 -n -f 如 tail index.html , tail -f -n 5 index.html
tab 自動補全 連an兩次會將全部匹配內容顯示出來
history 查看操做歷史
ssh 遠程登陸 如: ssh root@gitlab.study.com
>和 >>重定向 如: echo hello world! > README.md, >覆蓋 >>追加
wget 下載 , 如 wget https://modejs.org/dist/v4.4.0/node-v4.4.0tar.gz
tar 解壓縮,如 tar zxvf node-v4.4.0.tar.gz
curl 網絡請求,如 curl http://www.baidu.com
whoami 查看當前用戶
'|' 管道符能夠將多個命令連接使用,上一次(命令)的執行結果會當成下一次的執行參數;
grep 匹配內容,通常結合管道符使用
1.4 vi編輯器
如Windows下的記事本,vi編輯器是Linux下的標配,經過它,咱們能夠建立文件,編輯文件,他是一個隨着系統一塊兒安裝的文本編輯軟件;
1,三種模式
vi 編輯器提供了三種模式, 分別是 :命令模式 , 插入模式 ,底行模式;每種模式下用戶所能進行的操做是不同的;
3種模式的切換以下圖所示:
2.使用編輯器
1.安裝
Window安裝
http://git-scm.com/download/win下載Git客戶端軟件
Linux安裝
CentOS發行版:sudo yum install git
Ubuntu發行版:sudo apt-get install git
Mac安裝
打開Terminal直接輸入git命令,會自動提示,按提示引導安裝便可。
git三種狀態 已提交,已修改,已暫存;
git三個工做區域:Git倉庫,工做目錄,暫存區域,
Git倉庫目錄是git用來保存項目的元數據和對象數據庫的地方,這是git最重要的部分,從其餘計算機克隆倉庫時,拷貝的就是這裏的數據;
工做目錄是對項目的某個版本獨立提取出來的內容,這些從git倉庫的壓縮數據庫提取出來的文件,放在磁盤上供你使用和修改;
暫存區域是一個文件,保存了下次將要提交的文件信息列表,通常在git倉庫目錄中;
基本的Git工做流程以下:
一、在工做目錄中修改文件。
二、暫存文件,將文件的快照放入暫存區域。
三、提交文件,找到暫存區域的文件,將快照永久性存儲到Git倉庫目錄。
• Git本地倉庫
Git本地倉庫指的是開發者開發設備中的倉庫
• Git基礎
命令行方式:任意目錄(建議開發目錄)右鍵 > Git Bash Here
1、配置用戶
配置用戶的意義在於記錄開發者信息,以便在版本控制記錄開發者的操做行爲,如lion於2016-08-24解決了一個bug。
git config --global user.name "自已的名字"
git config --global user.email "自已的郵箱地址"
--global 配置當前用戶全部倉庫
--system 配置當前計算機上全部用戶的全部倉庫
注:配置用戶只須要執行1次,能夠重複使用。
2、初始化倉庫
要用git進行版本控制,須要將現有的項目初始化爲一個倉庫,或者將一個已有的使用git進行版本控制的倉庫克隆到本地;
a) git init
git init只是建立了一個名爲.git的隱藏目錄,這個目錄就是存儲咱們歷史版本的倉庫,ls -al 能夠查看。
b) 假如公司已有項目用了Git,那咱們就利用克隆
git clone 倉庫地址
執行完這個命令,會在當前目錄下生成一個Monment目錄(默認和倉庫名稱相同),這個即是已有一個使用Git管理的項目。
3、查看文件狀態
初始化倉庫後即可以進行開發了,進入到剛剛建立好並初始爲倉庫的目錄,添加咱們開發須要的文件。
經過git status能夠檢測當前倉庫文件的狀態;
注:git會忽略空的目錄
4、添加文件到暫存區
假設通過一段時間的開發後,須要把已開發的部分存起來,使用git add 添加到暫存區。
git add 文件名 「*」或-A表明全部;
放到暫存區的文件被標記成了綠色,等待提交。
注:顏色是工具給添加的,目的是增長可讀性並非git統一的。
五、撤銷更改
繼續咱們的開發
再次git status能夠再次查看倉庫狀態;
說明index.html再次被修改了,並被標記了紅色。
又通過一段時間後發現新開發的部分有Bug,想要回到以前狀態,可使用git checkout 文件名。
注:從暫存區還原原到工做區;
5、提交文件
通過一個相對較長階段開發或者一個功能開發完成了,就能夠提交到本地倉庫了,永久保存了。
git commit -m '備註信息';
將暫存區被標記成綠色的文件,所有提交到本地倉庫存儲。
這時git status查看狀態
沒有什麼可提交的,變的很乾淨
6、查看提交歷史
反反覆覆開發了不少的功能了,經過git log查看一下提交的歷史。
咱們能夠查看到一次次提交記錄
commit 81b1e4fc2ae178caedf4575596377a80a6f1e73f
表明一次提交的惟一ID,通常稱爲SHA值。傻?
注:按鍵盤q鍵退出。
7、再次檢測倉庫文件狀態
隔了好些天后,繼續開發
git status 查看狀態
又提示有修改,等待從新添加到暫存區。
8、從新添加暫存區而後提交
九、再次查看歷史
git log 可查到全部提交歷史
這時能夠查看到更多提交歷史。
這時關掉全部目錄甚相當機!
10、恢復上一次提交的狀態
經過SHA值能夠回到以前某一次的提交(時光倒流)
git reset --hard c888a614e072e2這樣便回到了支付功能的狀態
git log再次查看發現最後一次提交成了支付功能了
在咱們的現實開發中,需求每每是五花八門的,同時開發個需求的狀況十分常見,好比當你正在專一開發一個功能時,忽然有一個緊急的BUG須要你來修復,這個時候咱們固然是但願在可以保存當前任務進度,再去修改這個BUG,等這個BUG修復完成後再繼續咱們的任務。如何實現呢?
經過Git建立分支來解決實際開發中相似的問題。
在Git的使用過程當中一次提交稱爲歷史記錄(版本),而且會生成一個惟一的字符串,
這個串能夠表明某一個歷史版本(實際使用只取前面幾位就能夠),
值得注意的是全部的提交(commit)實際上都是在分支(branch)的基礎上進行的。
當咱們在初始化倉庫的時候(其實是產生第1次提交時),Git會默認幫咱們建立了一個master的分支,而且有指針(HEAD)指到了末端。
指針(HEAD)用來標明當前處於哪一個分支的哪一個版本,如上圖指的處於master分支的最後1個版本。
咱們也能夠建立自已的分支;
1、建立分支
git branch hotfix
新的分支會在當前分支原有歷史版本的結點上進行建立,我稱其爲子分支;
新建的子分支會繼承父分支的全部提交歷史。
二、切換分支
git checkout hotfix HEAD如今又指向了hotfix的末端。
3、再次提交操做
修改bug後,提交;
此次的提交歷史版本就會記錄在hotfix這個分支上了,而且HEAD伴隨hotfix在移動。
4、當咱們再次切回到master時
當咱們切換回master後,HEAD指向了master分支的末端,而且咱們觀察發現咱們的文件內容仍是原來的「模樣」。
5、繼續以前的開發
總結:當咱們git checkout branchname時,HEAD會自動指向對應分支的末端,工做目錄中的源碼也會隨之發生改變。
這個時候咱們就在hotfix這個分支上修復了這個BUG,而咱們原來在master分支上的操做並未受到影響。
思考一個問題:
如今master這個分支上是否包含了hotfix的修復呢?
實際上從上圖能夠看出這時的master分支並無包含有hotfix的修復。
6、合併(融合)分支
這時master會有兩個父結點了,master便包含了hotfix裏的修復了;
7、刪除分支
git branch -d hotfix
這時用來修復BUG建立的hotfix分支已經沒有用處了,咱們能夠將它刪除。
經過上面學習咱們能夠很好的管理本地版本控制了,但是若是咱們下班回到家裏忽然來了靈感受得有部分代碼能夠優化,若是能接着公司電腦上的代碼繼續寫該有多好呀!另外一種情形,假設項目比較大,不一樣的功能模塊由不一樣的開發人員完成,不一樣模塊兒之間又不免會依賴關係,這時若是咱們的代碼互相合並(融合)該有多好呀!全部模塊開發完畢後,須要整合到一塊兒,要能作到準確無誤該有多好呀!
藉助一個遠程倉庫,你們能夠共享代碼、歷史版本等數據,即可以解決以上遇到的全部問題,在學習遠程倉庫前咱們先來學習git clone path這個命令。
3、建立共享倉庫
Git要求共享倉庫是一個以.git結尾的目錄。
mkdir repo.git 建立以.git結尾目錄
cd repo.git 進入這個目錄
git init --bare 初始化一個共享倉庫,也叫裸倉庫 注意選項--bare
這樣咱們就建好了一個共享的倉庫,但這時這個倉庫是一個空的倉庫,而且不容許在這個倉庫中進行任何修改。
4、向共享倉庫共享(同步)內容
將自已開發的項目同步到這個目錄中,其它開發者就能夠共享你開發的項目了。
一、進入到yike目錄
二、git push ../repo.git master
這樣便把yike中的項目同步進了repo.git中。
5、從共享倉庫裏取出內容
一、新建立一個目錄(模擬另外一個開發者)
二、git clone ./repo.git demo
經過repo.git共享倉庫,咱們輕鬆獲得了一個yike的副本
6、經過demo倉庫向repo.git共享內容
進入到demo裏,咱們作一些修改
cd demo
git push ../repo.git master
7、在360倉庫從repo.git獲取共享的內容
cd yike
git pull ../repo.git master
奇蹟彷佛發生了,咱們輕鬆的將demo倉庫裏的內容,經過repo.git共享給了yike倉庫。
驚喜不斷,問題也老是不斷,咱們發現咱們這個共享的倉庫只是放到了本地的,其它人是沒有辦法從咱們這個共享倉庫共享內容的!!!
咱們把這個共享的倉庫放到一臺遠程服務器上,問題不就解決了嗎?
若是咱們熟悉服務器的話,咱們徹底能夠將上述的步驟在咱們的遠程服務器上進行操做,而後再作一些登陸權限的設置,就可很是完美的搭建一個共享服務器了。其實爲了更好的管理咱們的倉庫,一些第三方機構開發出了Web版倉庫管理程序,經過Web界面形式管理倉庫。----------------gitHub
1、註冊帳號並完善資料
2、建立共享倉庫 右上角 New respository
3、填寫倉庫資料
4、共享倉庫
遠程地址特別長,咱們能夠給他起一個別名
git remote add origin git@github.com:Botue/repo.git
這樣origin 就表明 git@github.com:Botue/repo.git
當咱們經過git clone 從共享倉庫獲內容時,會自動幫咱們添加origin到對應的倉庫地址,例如:git clone git@github.com:Botue/repo.git 會自動添加origin 對應 git@github.com:Botue/repo.git
5、生成密鑰
ssh-keygen -t rsa 而後一路回車,這裏會在當前用戶生成了一個.ssh的文件夾
將id_rsa.pub公鑰的內容複製
打開gitHub的我的中心
打到SSH keys
到此咱們即可以經過gitHub 提供的Web界面來管理咱們的倉庫了。
咱們發現經過gitHub管理倉庫實在是太方便了,但是隻能無償使用公開倉庫,自已公司的代碼固然不能公開了,但是私有倉庫又是須要交「保護費」的,無耐國人仍是比較喜歡免費的,網絡界老是有不少雷峯的,好比gitLab!!!
git config配置本地倉庫
經常使用git config --global user.name、git config --global user.email
git config --list查看配置詳情
git init 初始一個倉庫,添加--bare能夠初始化一個共享(裸)倉庫
git status 能夠查看當前倉庫的狀態
git add「文件」 將工做區中的文件添加到暫存區中,其中file但是一個單獨的文件,也能夠是一個目錄、「*」、-A
git commit -m '備註信息' 將暫存區的文件,提交到本地倉庫
git log 能夠查看本地倉庫的提交歷史
git branch查看分支
git branch「分支名稱」 建立一個新的分支
git checkout「分支名稱」 切換分支
git checkout -b deeveloper 建立並切到developer分支
git merge「分支名稱」 合併分支
git branch -d 「分支名稱」 刪除分支
git clone 「倉庫地址」獲取已有倉庫的副本
git push origin 「本地分支名稱:遠程分支名稱」將本地分支推送至遠程倉庫,
git push origin hotfix(一般的寫法)至關於
otfixgit push origin hotfix:h
git push origin hotfix:newfeature