bash基本命令
命令 | 說明 |
---|---|
cd (change directory) | 更改當前所在的目錄 |
pwd (print work directory) | 顯示當前所在的目錄 |
ls (list) | 展示當前或者指定目錄中的所有內(nèi)容信息 -a 顯示所有內(nèi)容胞枕,-l 詳細信息列表 |
touch | 新建文件 |
mkdir | 新建文件夾 |
rm (remove) | 刪除文件把跨,加上-r 可以用來刪除文件夾 |
rmdir | 刪除空文件夾 |
cp (copy) | 復制文件或者 文件夾-r
|
mv (move) | 移動文件或者 文件夾 |
cat | 查看文件內(nèi)容 |
less | 分頁查看文件內(nèi)容 |
clear | 清空屏幕 ( command + k ) |
reset | 清空屏幕 |
open . | 打開當前命令所指的文件目錄 |
echo | 輸出內(nèi)容到屏幕 |
> | 重定向指令 覆蓋 |
>> | 重定向指令 追加 |
tab: 自動補全
上下方向鍵 命令歷史
vi編輯器
如同Windows下的記事本场勤,vi編輯器是Linux下的標配,通過它我們可以創(chuàng)建宝鼓、編輯文件。它是一個隨系統(tǒng)一起安裝的文本編輯軟件巴刻。
三種模式
- 普通模式 ---- 普通模式下無法進行內(nèi)容編輯愚铡,每個按鍵都會對相應自己的命令
1. 刪除功能
`dd` 刪除光標所在的一整行
`dw` 刪除光標所在的后面的一個單詞
2. 撤銷
`u` 撤銷
3. 開一個新行
`o` 在光標所在的行下面開一個新行
`O` 在光標所在的行上面開一個新行
4. 復制
`yy` 復制光標所在的行 yank
`yw` 復制一個單詞
5. 粘貼
`p` 粘貼 paste
6. 光標的移動指令
1. 方向鍵(不推薦使用)
2. h j k l
3. w e b
7. 重復命令
數(shù)字+命令
- 插入模式 ---- 我們可以像使用正常的編輯器一樣,去編輯內(nèi)容
- 命令模式 ---- 可以輸入不同的命令胡陪,來實現(xiàn)不同的功能
模式切換
- 普通->插入
i
a
- 插入->普通
esc
ctrl+[
- 普通->命令
:
- 命令->普通
esc esc
或者刪掉:
- 插入模式和命令模式不能直接切換沥寥,需要先切換到普通模式中!
保存
進入命令模式
-
:w
-- 保存 -
:q
-- 退出 -
:wq
-- 退出并保存 -
:q!
-- 修改之后柠座,不想保存邑雅,就想退出
如果編輯器非正常退出,比如直接點擊了窗口的關閉按鈕妈经,那么下次進入編輯器編輯剛才的文件的時候淮野,會出現(xiàn)報錯捧书,解決方法就是,直接將骤星,生成的.xxx.swp文件刪除重新打開編輯器就可以了>伞!
版本控制工具
VCS Version control system
記錄所有的修改歷史妈踊,方便日后恢復到指定的修改的版本A撕俊!
版本控制工具還可很方便實現(xiàn)代碼共享廊营,以及合并歪泳!
分類
本地版本控制工具
集中式版本控制工具 (代表:SVM)
分布式的版本控制工具 (代表:Git)
本地式只適合單人開發(fā)
集中式和分布式都可以適用于多人協(xié)作開發(fā),但是不同點在于:
集中式版本庫是存放在服務器上露筒,所有人開發(fā)都要從服務器獲取源代碼呐伞,并且修改之后需要提交給服務器!
分布式的版本庫是存放在本地慎式,當需要共享代碼的時候伶氢,通過源代碼共享服務器進行共享即可!瘪吏!
git
git的基本使用
- 配置 (一臺電腦只需要配置一次癣防,可以修改悠就,修改就是直接重復命令泼掠,會把原來的信息給覆蓋掉)
git config --global user.name "yonghuming" (配置用戶名)
git config --global user.email "用戶郵箱" (配置用戶郵箱)
- 初始化倉庫
cd 當前項目文件夾
git init
git init 命令建丧,實際就是在當前項目中創(chuàng)建了一個`.git`的隱藏文件夾胸遇,這個文件夾中就是用來保存所有的版本信息的內(nèi)容
- 添加文件到暫存區(qū)
git add 文件名 (可以添加單個文件辕狰,也可以一次性添加多個文件)
git add *
git add .
git add -A
- 將文件從暫存區(qū)保存到版本庫径簿,生成新的版本
git commit -m "說明信息"
- 查看當前目錄下問價的狀態(tài)信息
git status
- 查看提交的版本歷史記錄
git log
- 將文件從暫存區(qū)恢復到工作目錄
git checkout 文件名
- 將文件從版本庫中指定的版本恢復到工作目錄
git reset --hard 版本號
- 查看所有操作流水
git log --graph --oneline --decorate --all
- 查看某個log(版本)的修改提交記錄
git show 版本號
- 克隆某個分支
git clone -b 分支名 遠程地址 文件夾名
- 拉取遠程代碼到本地
git pull
git pull --rebase // 會使commit看起來很自然芬位。https://www.cnblogs.com/wangiqngpei557/p/6056624.html
- 清除所有的提交歷史記錄
1.Checkout
git checkout --orphan latest_branch
2. Add all the files
git add -A
3. Commit the changes
git commit -am "commit message"
4. Delete the branch
git branch -D master
5.Rename the current branch to master
git branch -m master
6.Finally, force update your repository
git push -f origin master
- git rebase 合并commit
合并提交記錄
1. git rebase -i <要合并到哪個版本號> 或 git rebase -i <開始版本號> <結束版本號>
2. 除了第一行記錄 其余的改成 s 然后保存退出
3. 編輯commit 記錄 然后保存退出
- git rebase merge分支 (讓提交記錄變得清晰 不會出現(xiàn) 執(zhí)行 git merge 指令 而產(chǎn)生merge的commit 節(jié)點)
git checkout dev
git rebase master # 將dev分支和master分支做一次衍合處理
# git提示出現(xiàn)了代碼沖突凿渊,此處為之前埋下的沖突點渺尘,處理完畢后
git add src/index.html # 添加沖突處理后的文件
git rebase --continue # 加上--continue參數(shù)讓rebase繼續(xù)處理
git checkout master
git merge dev
git的分區(qū)
- 工作目錄 (指的是項目文件存放的位置)
- 暫存區(qū) (用git add就會將文件添加到這個暫存區(qū))
- 版本庫 (存放版本歷史信息的位置)
git add 是將工作目錄中的文件內(nèi)容添加到了暫存區(qū)
git commit 是將暫存區(qū)中的內(nèi)容在版本庫中生成一條新的版本記錄
git checkout 是將暫存區(qū)中的內(nèi)容獲取出來放到了工作目錄
git reset --hard 是將版本庫中指定版本的內(nèi)容獲取出來放到工作目錄
一句話總結: git 其實就是將文件在各個區(qū)之間進行流轉4旄搿!
分支
oper | command |
---|---|
創(chuàng)建分支 | git branch 分支名 或 git checkout -b 分支名 |
切換分支 | git checkout 分支名 |
刪除本地分支 | git branch -D 分支名稱 |
合并分支 | 在A 分支 執(zhí)行命令 git merge B (B 合并到了A ) |
查看所有分支 | git branch 或 git branch -a |
查看本地分支與遠程的關聯(lián) | git branch -vv |
刪除遠程分支 | git push origin --delete <BranchName> |
創(chuàng)建并關聯(lián)遠程一個新分支 | git checkout 分支名, 成功后 用 git branch -vv 看一下關聯(lián) |
同步遠程分支到本地 (遠程可能刪掉了某些分支鸥跟,本地同步一下) | git pull --prune 或 git pull -p |
沖突問題
分支A中創(chuàng)建了文件xx.txt, 分支B中也創(chuàng)建了個xx.txt丢郊,那么git就會發(fā)現(xiàn),有兩個同名的文件锌雀,這時候蚂夕,就是沖突產(chǎn)生了,沖突產(chǎn)生之后腋逆,合并會失敗婿牍,需要先解決沖突,然后再次提交惩歉,才能正常的合并等脂。
解決沖突
沖突產(chǎn)生之后俏蛮,git會告知哪個文件沖突了,然后在文件中上遥,會用 >>>> ==== <<< 這樣的方式將沖突的內(nèi)容標記出來搏屑,我們只需要將標記刪除,然后將代碼改成自己想要的結果粉楚,再次add commit即可@绷怠!
分支的使用原則
只要有新的任務模软,就開辟一個新的分支去做伟骨,做完之后,將分支合并回去就可以了H家臁携狭!
master分支
這個分支,是git默認自動創(chuàng)建的;乩逛腿!
創(chuàng)建的時機,并不是在git init
之后就會有仅颇,而是单默,在第一次提交完成之后,才會默認的創(chuàng)建出來這個分支M摺雕凹!
分支切換要注意的事項
必須先將所有的更改,做一次提交之后政冻,再切換分支!O哂明场!
回滾操作/恢復操作
- 如果用
git reset --hard 版本號
從版本庫里面恢復了某一個版本,那么以前的所有歷史版本也就不存在了李丰,回滾操作就是一粒后悔藥苦锨,如果短時間后悔恢復此版本,而且還想恢復另外一個版本趴泌,就可以用這個方法
- 查看所有的操作日志
git log -g
- 創(chuàng)建新的分支舟舒,將要恢復到的版本號作為最后一個參數(shù)
git branch 分支名 版本號
- git pull時出現(xiàn)沖突 放棄本地修改,使遠程庫內(nèi)容強制覆蓋本地代碼
git fetch --all //只是下載代碼到本地嗜憔,不進行合并操作
git reset --hard origin/master //把HEAD指向最新下載的版本
- git push 本地強制覆蓋遠程
git push ...... -f -f命令
遠程倉庫
git
git 是一個分布式的 版本控制工具秃励,特點,就是版本庫存放在本地<贰6嵯省皆尔!
遠程倉庫的作用
就是共享版本庫!1依慷蠕! 共享代碼!J成搿流炕!
遠程倉庫的創(chuàng)建
遠程倉庫其實就是一個裸倉庫
裸倉庫
創(chuàng)建裸倉庫
git init --bare
裸倉庫創(chuàng)建完成之后,就不需要做任何操作了仅胞,在裸倉庫中不能進行任何的開發(fā)操作
遠程倉庫的操作命令
- 給遠程倉庫推送內(nèi)容
git push 遠程倉庫地址 本地分支名稱:遠程分支名稱
如果本地分支名稱和遠程分支名稱相同每辟,那么可以縮寫如下:
git push xxx.xxx.git master:master
git push xxx.xxx.git master
- 獲取遠程倉庫中 所有 的內(nèi)容
git clone 遠程倉庫地址 文件夾名稱
文件夾名稱也可以不用寫,默認使用的就是遠程倉庫的文件夾名稱1省影兽!
克隆不需要密碼驗證 push需要 因為防止別人也能隨便往你項目中推送東西
如果是克隆的遠程倉庫中的所有內(nèi)容,那么意味著莱革,項目中的所有分支中的內(nèi)容都被clone下來了峻堰,但是在git bash命令行中使用git branch命令看不到所有分支的名字,但是分支確實已經(jīng)存在了盅视,這個時候如果想要看某一個分支里面的內(nèi)容捐名,我們需要看遠程倉庫中的分支名稱,然后在bash命令中用git checkout "分支名",切換到了這個分支之后闹击,再用git branch查看分支名稱镶蹋,就可以看到了
- 獲取遠程倉庫中更新了的內(nèi)容
git pull 遠程倉庫地址 分支名稱
- 如果在本地刪除了一個文件之后,想在遠程倉庫下載恢復此文件赏半,下載之前贺归,要重新add commit一下本地的項目文件。目的是讓遠程的倉庫和本地的版本庫中的數(shù)據(jù)做一下對比断箫,有差別拂酣,才能用pull獲得此文件。
注意
只有在遠程倉庫中從未推送過任何內(nèi)容的時候仲义,我們才能隨意向里面推送任何內(nèi)容
但是婶熬,一旦已經(jīng)推送過一次內(nèi)容了,那么之后就不能隨便的向遠程倉庫推送內(nèi)容了埃撵,能推送的赵颅,只能是和第一次推送相關的修改的內(nèi)容!暂刘!
每次在向遠程倉庫中推送新內(nèi)容的時候饺谬,必須先進行一次獲取更新內(nèi)容的操作(pull),否則可能推送失斠ゼ稹I淘獭5肌!
遠程倉庫
遠程倉庫地址別名
因為遠程倉庫地址的連接過長绪商,不容易記憶苛谷,所以每次在向服務器提交新內(nèi)容的時候,都需要重新去查看一次遠程倉庫的地址格郁,非常麻煩8沟睢!
我們可以為每個遠程倉庫地址例书,設置一個簡單的別名
設置遠程地址的別名
git remote add 別名 遠程倉庫地址
查看所有的遠程地址別名
git remote
刪除別名
git remote remove 別名
重命名別名
git remote rename 舊別名 新別名
查看別名對應的地址
git remote get-url 別名
設置別名對應的地址
git remote set-url 別名
origin別名
如果是直接通過 git init
創(chuàng)建的倉庫锣尉,那么這個倉庫中是不會有origin的別名的!>霾伞自沧!
如果倉庫是通過 git clone
從遠程倉庫中獲取的內(nèi)容,那么這個倉庫中會自動添加一個 origin
的別名树瞭,指向的地址其實就是當時 clone
的遠程倉庫的地址
git安裝問題 踩坑
git報錯 fatal:open /dev/null or dup failed: No such file or directory
在其他win10電腦上復制了一個null.sys文件拇厢,替換C:\Windows\System32\drivers\null.sys
ssh
概念
用作客戶端和服務器通信的時候的一個安全的協(xié)議,全稱是 Secure Shell晒喷,一般用作服務器的遠程管理
ssh工具
在linux系統(tǒng)下孝偎,提供了一個工具,ssh凉敲,這個工具可以通過ssh協(xié)議連接服務器并對服務器進行遠程的管理
使用示例
ssh root@riksy.love
ssh協(xié)議的格式
用戶名@服務器的地址
公鑰以及私鑰的生成
- 通過
ssh-keygen
命令就可以生成公鑰和私鑰
ssh-keygen -t rsa
敲完這個命令之后衣盾,一定要一路敲回車,知道看到冒泡泡為止RァJ凭觥!蓝撇!
服務器免密登錄的設置步驟
- 生成公鑰以及私鑰
- 在服務器的 ~/.ssh/autorized_keys中將生成公鑰中的所有的內(nèi)容追加到里面去
- 再次登錄服務器就不需要密碼了;展辍!
github免密
github
提供了兩種推送和獲取代碼的協(xié)議
- https -- 地址:https://github.com/liuxinya/firstP.git
- ssh -- 地址:git@github.com:liuxinya/firstP.git
免密設置步驟
如果從未生成過秘鑰
需要執(zhí)行ssh-keygen -t rsa
生成秘鑰文件唉地,輸入此命令之后一路回車即可(在用戶根目錄下.ssh目錄中,有個id_rsa.pub文件)打開github传透,點擊個人頭像耘沼,選擇下面的settings
點擊左邊欄中的 SSH and GPG keys
點擊頁面右上方的New SSH Key
打開自己的公鑰文件(用戶根目錄下.ssh目錄中,有個id_rsa.pub文件)復制文件中的所有的內(nèi)容
將復制好的內(nèi)容粘貼到 key 文本框中
點擊Add SSH key 按鈕
以后在本機使用github的時候朱盐,直接使用ssh協(xié)議的連接群嗤,就可以實現(xiàn)免密功能了!1铡狂秘!
只有使用ssh協(xié)議的連接骇径,才能夠實現(xiàn)免密的push,pull
靜態(tài)頁面托管
github給每個賬號提供了一個項目作為靜態(tài)頁面托管的機會者春!
我們可以將自己寫好的靜態(tài)頁面全部放到github上去破衔,通過指定的連接就能夠訪問到頁面效果!钱烟!
步驟
創(chuàng)建新的項目
項目名稱必須是 : 用戶名.github.io
將自己的寫好的項目直接推送到這個github倉庫中
通過 用戶名.github.io 地址 就可以直接訪問頁面了N浮!