### 2021-08-13是個大日子
*****
突然發現,代碼提交不了,嗚嗚嗚...
[官方解釋(英文自行查看)](https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/) :反正大致意思是,密碼驗證于2021年8月13日不再支持,也就是不能再用密碼方式去提交代碼。請用使用?**personal access token**?替代。

* 具體如何生成token:
第一步:
  

第二步:**生成的token一定要復制,記住,記住,記住,再次進入就找不到了**
把`token`直接添加遠程倉庫鏈接中,這樣就可以避免倉庫每次提交代碼都要輸入`token`了:
```
git remote set-url origin https://token@github.com/username/ec-echart-wx.git
// token: 你所生成的token
// username: 你的用戶名
// ec-echart-wx:倉庫名稱
```

其實手動修改.git文件下得config,如下圖,也可以:

注:發現git pull等失敗,試試把https修改成http
# 進入正題
*****
### 分支如下 dev-m / dev-p

### 本地創建分支,并推送到遠程
當前分支是:dev-m
git branch dev-p // dev-p就是分支名字
git push origin dev-p //把分支推送到遠程
git checkout dev-p //切換分支到dev-p
//到這里分支已經切換到:dev-p
git branch -a //查看所有分支
### 下面是(全部/單獨)添加某個文件(夾)
當前分支:dev-p
git add . // “ . ” 全部更改的都提交
git add pages //pages就是文件夾 (如果是文件git add test.txt)
git commit -m "添加這次提交說明記錄"
git push origin dev-p
### 方法一:合并分支(從dev-p合并到dev-m分支)
當前分支是dev-p
git checkout dev-m
git pull
git merge dev-p
git push origin dev-m

### 方法二:合并分支(從dev-m合并到dev-p分支)
當前分支:dev-p
git fetch origin dev-m //創建臨時緩存分支,dev-m必須是你要合并的分支的名稱
git diff dev-m //查看dev-m 分支的修改記錄
git merge dev-m //把緩存分支合并到當前分支dev-p
git branch -d dev-m // 刪除本地緩存分支dev-m,不影響遠程的dev-m分支
git push origin dev-p //提交至遠程分支
--------------------------------------------------------------------------
如果沖突,就先解決沖突文件,然后在操作:
git add .
git commit -m "解決沖突"
git push origin dev-p

### 解決沖突
手動去texts.txt修改沖突的地方
<<<<<<< HEAD
dev-m分支的內容
======= 分開來,上部分指當前(dev-m)分支的內容,下面屬于dev-p的內容
dev-p分支的內容
>>>>>>> dev-p
可能有多個文件沖突,注意Auto-merging 后面的文件名



注:
從dev-p的內容合并到dev-m中,提交成功,還差一步
切換至dev-p中,把dev-m也合并到dev-p實現兩個分支內容同步
### 撤銷已經修改的某個文件/文件夾
##### 1、在沒有git add .的情況
git checkout . // 全部撤銷修改
git checkout pages // 只撤銷pages文件夾內容
git checkout text.txt //只撤銷text.txt文件的內容
##### 2、已經git add .的情況
git reset HEAD // 表示從緩存區撤銷回到第一步,git reset HEAD text.txt表示text.txt這個文件撤銷回到第一步
git checkout . // 即可
##### 3、已經git commit -m ""
git commit --amend -m "" // commit的說明重置,或者說修改
##### 4、已經commit了,又修改,然后在上傳,走git add . git commit -m "",就會出現兩次提交記錄,如下圖

##### 5、解決第4點出現兩次commit問題
git add test2222.txt
git commit --amend --no-edit

### 查看分支提交記錄
git log //可以看到每次提交的commit
git log -p // 修改記錄
注:退出--->因為狀態下,按 q 退出;往下看---> enter鍵
### 版本回退
回退上一個版本:
**reset:歷史記錄沒有了**
git reset --hard HEAD^
git push origin HEAD --force
如果推送遠程失敗,重復操作一次

回退多個版本:
git reset --hard HEAD~3

1、reset // git reset --hard 版本號(6位或者更多)如圖五顯示
回退之后,回退的歷史記錄就沒有了
2、revert // git revert
一級一級的往后revert,值得注意的是從當前版本號開始,如圖二所示,版本號 028c21要回退到169bff,就是內容為3的版本,需要git revert 028c2169 git revert f8327e733兩次revert,然后本地如圖三所示,最后push到遠程如圖四所示
圖一:

圖二:

圖三:

圖四:

圖五:

### stash緩存
在一個分支上修改,但是同時又想切回其他分支,肯定是切換不了的,這時候怎么辦呢

可以把當前分支修改放置緩存區中
git stash // (時間可能比較久,注意)

那么怎么把緩存區的工作內容切回來呢?
git stash list // 查看緩存區有多少緩存
git stash pop // 默認列表中第一個切回當前工作區,并刪除緩存區這條記錄
git stash apply // 默認列表中第一個切回當前工作區,并不刪除緩存區這條記錄
git stash show -p stash@{0} // 查看緩存記錄修改記錄



### stash緩存實際應用
git stash
git pull
git stash pop (或者git stash apply,還是建議使用apply吧,緩存還在)
手動解決沖突文件(修改同一文件這個沖突比較好改,修改同一文件中同一個地方,就麻煩些了)
git add .
git commit -m "說明"
git push origin dev-p
補充:
git stash list 查看緩存列表
git stash show / git stash show stash@{0} 前面是簡寫形式,查看這個修改了那些文件
git stash / git stash save "說明這次緩存內容" 前面是簡寫形式,如果不添加save,默認記錄commit的說明
git stash pop / git stash pop stash@{0} 前面簡寫形式,stash@{0}中{}中可以是1,2,3,4等等,對應緩存list中的序號(或者說id)
git stash drop stash@{0} 刪除第一項緩存項
高級:
git stash -a/-u save "說明提交記錄"
-a所有文件都緩存,包括git忽略文件
-u包含新增文件,而不會存git忽略文件


### 合并指定文件夾
從dev-m合并某個文件到dev-p的過程:
當前分支是dev-m
切換分支到dev-p: git checkout dev-p
當前分支是dev-p (注意需要git pull最新的代碼)
創建一個臨時分支,并且切換到臨時分支:git checkout -b p-tmp
從dev-m分支復制需要合并的文件夾到臨時分支p-tmp: git checkout dev-m ./src/views/home
把臨時分支內容提交到緩存區:git commit -m "緩存說明" ----不可少哦
重新切換到目標分支dev-p : git checkou dev-p
把臨時分支合并到目標分支:git merge p-tmp
(有沖出就手動解決沖突,解決完成 git add . git commit)
提交至遠程分支git push origin dev-p
最后看看還需要刪除本地臨時分支git branch -d p-tmp
OK ...




### 合并文件之后回退
當前分支是:dev-m ,要合并dev-p分支
git merge dev-p
出現一下情況:
1、出現沖突了,發現沖突,還沒有git add . ,想要回到merge前,git merge --abort ,意思是:放棄這次合并
2、出現沖突了,發現沖突,已經git add . ,想要回到merge前,git merge --abort ,意思是:放棄這次合并
3、出現沖突了,發現沖突,已經git commit -m "" ,想要回到merge前,git revert -m 1 HEAD ,意思是:新建一個commit說明,并且回到合并之前的狀態,(可能還要重提提交呢)(慎用git reset --hard commit_id 回退到指定的commit節點)
### 修改git的賬號密碼
https://jingyan.baidu.com/article/642c9d3435a6e9644a46f732.html
### 需要某一個commit與當前commit合并代碼
git reflog // 查看commit記錄

git cherry-pick commit3

- 首頁
- 2021年
- 基礎知識
- 同源策略
- 跨域
- css
- less
- scss
- reset
- 超出文本顯示省略號
- 默認滾動條
- 清除浮動
- line-height與vertical-align
- box-sizing
- 動畫
- 布局
- JavaScript
- 設計模式
- 深淺拷貝
- 排序
- canvas
- 防抖節流
- 獲取屏幕/可視區域寬高
- 正則
- 重繪重排
- rem換算
- 手寫算法
- apply、call和bind原理與實現
- this的理解-普通函數、箭頭函數
- node
- nodejs
- express
- koa
- egg
- 基于nodeJS的全棧項目
- 小程序
- 常見問題
- ec-canvas之橫豎屏切換重繪
- 公眾號后臺基本配置
- 小程序發布協議更新
- 小程序引入iconfont字體
- Uni-app
- 環境搭建
- 項目搭建
- 數據庫
- MySQL數據庫安裝
- 數據庫圖形化界面常用命令行
- cmd命令行操作數據庫
- Redis安裝
- APP
- 控制縮放meta
- GIT
- 常用命令
- vsCode
- 常用插件
- Ajax
- axios-services
- 文章
- 如何讓代碼更加優雅
- 虛擬滾動
- 網站收藏
- 防抖節流之定時器清除問題
- 號稱破解全網會員的腳本
- 資料筆記
- 資料筆記2
- 公司面試題
- 服務器相關
- 前端自動化部署-jenkins
- nginx.conf配置
- https添加證書
- shell基本命令
- 微型ssh-deploy前端部署插件
- webpack
- 深入理解loader
- 深入理解plugin
- webpack注意事項
- vite和webpack區別
- React
- react+antd搭建
- Vue
- vue-cli
- vue.config.js
- 面板分割左右拖動
- vvmily-admin-template
- v-if與v-for那個優先級高?
- 下載excel
- 導入excel
- Echart-China-Map
- vue-xlsx(解析excel)
- 給elementUI的el-table添加骨架
- cdn引入配置
- Vue2.x之defineProperty應用
- 徹底弄懂diff算法的key作用
- 復制模板內容
- 表格操作按鈕太多
- element常用組件二次封裝
- Vue3.x
- Vue3快速上手(第一天)
- Vue3.x快速上手(第二天)
- Vue3.x快速上手(第三天)
- vue3+element-plus搭建項目
- vue3
- 腳手架
- vvmily-cli
- TS
- ts筆記
- common
- Date
- utils
- axios封裝
- 2022年
- HTML
- CSS基礎
- JavaScript 基礎
- 前端框架Vue
- 計算機網絡
- 瀏覽器相關
- 性能優化
- js手寫代碼
- 前端安全
- 前端算法
- 前端構建與編譯
- 操作系統
- Node.js
- 一些開放問題、智力題