Linux 常用DOS命令
git倉庫代碼管理是基于linux命令開發的,以下是常用的linux DOS命令
ls -l/-a
: 查看當前目錄結構(-a是可以查看所有的,包括隱藏的文件)
cd xxx[路徑地址]
: 進入到執行的文件夾中(進入的路徑地址,可以粘貼對應的操作命令窗口當中)
cd /
: 根目錄
cd ./
: 當前目錄
cd ../
: 上級目錄
clear
: 清屏
mkdir
:創建文件夾
touch
: 創建空的文件
vi
: 想文件中插入或者管理一些內容 i
進入插入模式
esc鍵 + :wq
: 退出內容的插入模式,把剛才編輯的內容進行保存
echo 內容 >文件名
: 向指定的文件中輸入內容
cat
: 查看文件中的內容
cp
: 拷貝
rm -f <file>
: 刪除文件 / 文件夾 -r(遞歸刪除) -f(強制刪除) 一旦刪除無法還原
sudo rm -r -f <Folder>
: 管理員刪除文件 / 文件夾
GIT安裝
windows系統安裝
鏈接:http://git-scm.com 下載后默認選項安裝即可(msysgit )
mac系統安裝
鏈接:http://brew.sh (安裝homebrew)
檢驗是否安裝成功
$ git --version
npm的應用
目前“工程化/自動化”開發(不一定是寫后臺),都是基于node環境,基于npm管理模塊,機務webpack實現模塊之前的依賴打包,部署上線等
1. npm常規操作
$ npm install xxx 把模塊安裝到當前目錄
$ npm install xxx -g 把模塊安裝在全局目錄下
$ npm uninstall xxx / npm uninstall xxx -g 卸載模塊
$ npm install xxx@xxx 安裝指定版本號的模塊
$ npm view xxx > xxx.version.txt 查看模塊的歷史版本信息
解決下載慢問題
npm的默認安裝源都是在:https://www.npmjs.com/,在國內安裝,下載速度較慢,想要下載速度快一些,我們可以如下處理:
安裝cnpm,后期都是基于cnpm安裝管理
$ npm install cnpm -g
$ cnpm install zepto
使用淘寶鏡像,首先安裝nrm切換源工具,基于nrm把源切換到淘寶源上
$ npm install nrm -g 把nrm切源工具安裝在全局
$ nrm ls 查看當前可用源
$ nrm use xxx 使用某個源
這樣處理完成后,后期的管理依賴基于npm即可
基于yarn安裝:它也是模塊管理器,類似于npm,但是安裝管理的速度比npm快的很多
$ npm install yarn -g
$ yarn add xxx
$ yarn remove xxx
使用yarn只能把模塊安裝到當前目錄下,不能安裝到全局環境下
brower也是類似于npm的包管理器,只不過它是從gitHub下載安裝
$ npm install bower -g
$ bower install xxx
解決安裝版本問題
首先查看當前模塊歷史版本信息
npm view jquery > jquery.version.json
:把當前模塊的歷史信息輸出到具體的某個文件中(文件名自己隨便起)
yarn add jquery@1.11.3
:安裝指定版本號,npm和yarn都是這樣來指定安裝具體版本模塊的
2. 環境依賴項
安裝在本地環境中,環境依賴項。在本地項目中基于npm / yarn 安裝第三方模塊
第一步:初始化
初始化配置清單:在本地創建一個package.json 的文件。作用:把當前項目做有依賴的第三方模塊信息(包含模塊名稱以及版本號等信息)都記錄下來;
創建package.json
$ npm init -y 或者 $ yarn init -y
- 基于yarn會默認生成一個配置清單,只是信息沒有手動創建的全面
- 創建配置清單的時候,項目目錄中不應該出現中文和特殊符號,這樣有可能識別不了
第二步:安裝
- 開發依賴(dev):只有在項目開發階段依賴的第三方模塊
- 生產依賴(dep):項目部署實施的時候,也需要依賴的第三方模塊
npm安裝:
npm install xxx --save 保存到配置清單的成產依賴中
npm install xxx --save-dev 保存到開發依賴中
yarn安裝:
yarn add xxx 默認就是保存到生產依賴
yarn add xxx --dev / -D 保存到開發依賴中
第三步:部署的時候“跑環境”
執行 npm install
或者 yarn install
即可,npm會自己檢測目錄中是否有package.json文件,如果有的話,會按照文件中的配置清單依次安裝。
配置清單意義:
開發一個項目,我們需要配置清單“package.json”,當我們安裝第三方模塊使用的時候,把安裝的模塊信息記錄到配置清單中,這樣以后不管是團隊協作開發還是項目部署上線只需要按照清單中的依賴及版本號,重新安裝即可(重新安裝:跑環境)
package.json 文件記錄信息
{
"name": "view", //=>文件名
"version": "1.0.0", //=>版本號
"description": "", //=>模塊描述
"main": "index.js", //=>當前模塊的主入口文件
"scripts": { //=>可執行腳本
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": { //=>生產依賴
"axios": "^0.18.0",
"bootstrap": "^4.3.1",
"vue": "^2.6.10"
},
"devDependencies": {//=>開發依賴
"less": "^3.9.0"
}
}
安裝在本地和全局的區別
安裝在全局特點
- 所有的項目都可以使用這個模塊
- 安裝在全局可以使用命令操作
- 劣勢:
- 容易導致版本沖突
- 安裝在全局模塊不能基于commonJS模塊規范調取使用
安裝在本地特點
- 只能在當前項目使用這個模塊
- 劣勢:
- 不能再接的使用命令操作
npm root / -g 查看本地項目或者全局環境下,npm的安裝目錄
安裝在全局目錄下的模塊,但部分會生成xxx.cmd 的文件只要有這個文件,那么xxx就是一個可執行的命令(例如:yarn.cmd => yarn就是命令)
安裝在本地使用命令操作
把模塊安裝在本地,如果是支持命令操作的(會在node_modules的bin中生成xxx.cmd的命令文件,只不過這個文件無法再全局下執行 => 不能直接命令)
在package.json的scripts中配置需要執行的命令腳本
"scripts":{
"zx":"lessc -v" 屬性名自己設置即可,屬性值是需要執行的命令腳本,根據需要編寫(可以配置很多命令的)
}
這樣的操作就是把配置的腳本執行
npm run zx / yarn zx
- 首先到配置清單的scripts中查找
- 找到把后面對應的屬性值(執行腳本)執行
- 執行腳本的時候,會到本地node_modules中bin文件夾查找,沒有的話會向npm安裝的全局下查找
GIT的基礎知識
git是一個分布式代碼版本管理控制系統
- 記錄當前產品代碼的所有版本信息(歷史修改信息)而方便快速回退到某一個具體版本
- 方便團隊協作開發,能夠檢測代碼沖突,能夠合并代碼等
GIT分布式版本控制器
SVN特點(集中式)
版本控制系統
- 開發中我們把每一次的修改都有效的進行記錄(記錄成一個版本),后期如果需要回退原有的版本或者是用當前的和某一個版本進行比較等,都可以有效的進行管理
- 所有的版本都是在中央服務器上建立的,本地客戶端只是一個開發的環境,開發完成需要推送到服務器上生成歷史版本,需要回退到某個版本也需要從中央服務器上拉,必須鏈接上中央服務器才可以——必須連網
GIT特點(分布式)
分布式管理系統特點
- 所謂分布式,就是每個開發者的客戶端都是一個完整的倉庫,都能記錄歷史版本信息,這樣就不需要聯網我們也能生成版本記錄,也可以快速回退到某個版本
- Linux團隊開發的GIT,所以git中的命令大部分都是linux命令
總結:GIT是按照源數據(文件流)來實現文件傳輸的,而SVN是按照文件傳輸的,所以GIT比SVN更快
GIT的常規操作
① 初次使用git,先在本地配置一些基礎信息
如果是第一次使用git,生成歷史版本的時候,需要提供身份認證,只要在本地git全局環境下配置一些信息即可。
git config -l:查看當前配置全局信息
git config --global user.name 'xxx'`: 增加用戶名
git config --global user.email 'xxx'` :增加郵箱
注意:建議大家在配置的用戶名和郵箱和 gitHub保持一致(這樣以后在本地向gitHub推送內容的時候,能夠展示出是誰推薦的)
**每一個GIT倉庫都有三個分區 **
- 工作區:寫代碼
【 紅色:代表工作區文件 】
- 暫存區:臨時存放每一次修改的代碼,但是并沒有生成歷史版本
【 綠色:暫存區 】
- 歷史區:存放所有歷史版本的地方(提交到歷史區就會生成歷史版本)
【 什么都不顯示代表已經提交到歷史區 】
② GIT常用命令
這些是各種場合常見的 Git 命令:
開始一個工作區(參見:git help tutorial)
clone 克隆倉庫到一個新目錄
init 創建一個空的 Git 倉庫或重新初始化一個已存在的倉庫
在當前變更上工作(參見:git help everyday)
add 添加文件內容至索引
mv 移動或重命名一個文件、目錄或符號鏈接
reset 重置當前 HEAD 到指定狀態
rm 從工作區和索引中刪除文件
檢查歷史和狀態(參見:git help revisions)
bisect 通過二分查找定位引入 bug 的提交
grep 輸出和模式匹配的行
log 顯示提交日志
show 顯示各種類型的對象
status 顯示工作區狀態
擴展、標記和調校您的歷史記錄
branch 列出、創建或刪除分支
checkout 切換分支或恢復工作區文件
commit 記錄變更到倉庫
diff 顯示提交之間、提交和工作區之間等的差異
merge 合并兩個或更多開發歷史
rebase 在另一個分支上重新應用提交
tag 創建、列出、刪除或校驗一個 GPG 簽名的標簽對象
協同(參見:git help workflows)
fetch 從另外一個倉庫下載對象和引用
pull 獲取并整合另外的倉庫或一個本地分支
push 更新遠程引用和相關的對象
命令 'git help -a' 和 'git help -g' 顯示可用的子命令和一些概念幫助。
查看 'git help <命令>' 或 'git help <概念>' 以獲取給定子命令或概念的幫助。
git init
: 會在當前目錄創建一個空GIT倉庫,文件目錄中生成 .git
的隱藏文件夾
git add -a/.
:把當前工作區修改的內容全部提交到暫存區
git add xxx.js
:具體文件提交到暫存區
git diff
:顯示提交之間、提交和工作區之間等的差異
git commit -m'[備注]'
:把暫存區的內容提交到歷史區,生成一個歷史版本(我們需要寫備注信息,聲明當前版本的特點)
git commit:提交版本信息
注意:直接輸入`git commit` 執行會彈出一個提示文本界面,需要我們編寫本次提交到歷史區的版本信息和備注內容。
步驟:
1. 先按"i"進入編輯插入模式
2. 輸入備注信息
3. 按ESC鍵
4. 輸入":wq" 保存并退出
git status
:查看當前修改的文件處于哪一個區域
③ 把暫存區的某一個文件刪除(提交到暫存區的內容不好,我們可以刪除)
git rm --cached <file>
:把暫存區的某一個文件撤回到工作區
git rm --cached . -r
:刪除暫存區所有提交的文件
注意:如果在刪除過程中,發現從暫存區撤銷的文件在工作區已經被修改了,只有加上
-f
才能強制從暫存區把內容刪除掉。git rm --cached <file> -f
。
④ 提交到暫存區一份,把工作區內容改了,但是改的東西不好,想把暫存區上次提交的內容撤回到工作區(覆蓋工作區新寫的內容)
git checkout <file>
:把暫存區文件撤回到工作區覆蓋工作區文件
總結:每一次區域信息的提交都不會刪除原有區域中的內容,這樣保證下一次提交,只是把區域對比出來不一樣的內容提交,而不是所有。
⑤ 查看每個區代碼區別
git diff
:工作區 vs 暫存區
git diff master
:工作區 vs 歷史區MASTER分支
git diff --cached
:暫存區 vs 歷史區
⑥ 查看歷史版本信息
git log
查看提交記錄
git reflog
查看所有歷史的記錄 (包括歷史區回滾后)
⑦ Git忽略上傳文件配置
.gitignore
后綴文件,GIT提交的忽略文件,這個文件存儲了當git提交時候所忽略的文件
注意:真實項目中,并不是所有的文件都和項目有關系(例如:.idea是webstorm生成的配置文件夾和項目沒關系… ) 通過linux 命令 touch .gitignore
后綴文件
忽略上傳通用文件設置
# dependencies
node_modules
# testing
/coverage
# production
/build
#misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.produvtion.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
#webStorm
.idea
gitHub倉庫管理代碼
- 一個提供代碼管理(托管)的公共平臺,我們以及眾多開發者,會把自己的生產組件/類庫/插件/框架/等托管到這個平臺中,供別人下載使用和研究。在gitHub中,我們可以創建倉庫來管理自己的項目文件,而gitHub支持開發者通過git操作,把本地的項目代碼推送到指定的倉庫中,它提供靜態web頁面的發布。
- 在國內有一個和gibHub類似的網站:coding;和gitHub 類似也是提供代碼管理平臺。
第一、gitHub的遠程倉庫關聯
讓本地的git倉庫和遠程倉庫建立關聯
git remote -v
:查看所有的關聯信息
git remote add [name] [遠程倉庫地址]
:建立關聯
我們遠程倉庫關聯在一起的名字默認:origin,當然自己可以隨意改動
git remote remove [name]
:移除關聯
第二、GIT推送和拉取信息
- 把本地代碼推送到遠程倉庫上或者從遠程倉庫上拉取最新的信息到本地倉庫
- 我們本地推送和拉取的信息,既有代碼也有版本信息,與其說是推送和拉取信息,不如說是和遠程倉庫保持信息的同步。
- 為了避免本地代碼和遠程倉庫代碼發生沖突,
在推送信息之前,我們都應該先拉取信息
拉取信息
git pull [name]
:這個名字就是和遠程倉庫關聯的這個名字,以自己設置的為主。master從遠程倉庫的master分支拉取最新信息。
推送信息
git push [name] master
:把自己本地信息推送到遠程倉庫的master分支下
注意:以上操作是基礎知識點
第三、真實開發項目流程
- LEADER會首先創建一個遠程倉庫( 這個倉庫可能是空的,也可能是包含了項目需要的基礎結構信息 )
- 作為開發者,我們需要在本地創建一個本地倉庫,還需要讓當前本地的倉庫和遠程倉庫保持關聯。
原始做法:
git init
git remote add origin [git倉庫地址]
簡單做法:
- git clone [遠程倉庫地址] [克隆后的名字:可以不設置,默認是倉庫名
- 在本地開發產品,需要同步的時候,我們首先把工作區內容提交到暫存區
git add .
然后在倉庫中放到歷史區,生成版本信息git commit -m'版本信息'
- 在把本地歷史區的信息推送到遠程倉庫上 git pull / git push
- 在團隊協作開發的時候,leader會在自己的gitHub賬號下創建一個遠程倉庫,那么團隊其他成員向這個遠程倉庫推送信息的時候,使用自己的賬號是沒有沒送權限的,我們需要把當前這個遠程倉庫添加寫協作者,讓他人用自己的賬號也有操作權限。
- 小組成員在自己的郵箱中收到一封邀請郵件,需要對方確認同意。
單獨分支管理模式
一、每天第一件事是把master內容拉取到本地master上(提交之前也是),每個人在自己本地倉庫中先進行分支創建和切換
- 查看當前存在的分支
git branch *master 星代表當前在哪個分支上
- 創建一個叫dev的分支(創建分支完成,會把本地的master分支中的內容同步到dev分支上)
git branch dev
- 切換到dev分支上
git checkout dev
- 創建并切換到這個分支上
git checkout -b dev
- 更改遠程地址
查看遠程地址
git remote -v
更改遠程地址
git remote set-url origin 新的地址
添加刪除遠程地址
git remote rm origin
git remote add origin [url]
二、單獨分支管理模式
- 正常的開發和提交,但是所有的操作都是在自己的分支上
- 把自己本地分支中的內容,合并到自己本地
master
分支上 -
git stash
暫存文件(分支有更改,不能直接切換分支,需要把修改的內容暫存) - 先切換到
master
的分支上 -
git stash pop
還原暫時存儲的內容git merge dev
把dev
分支合并到master
分支上(有沖突按照之前的規格修改)