純粹在進行作業系統相關測試時,通常不會有金鑰可以激活。
一旦連上網,不久就會在桌面右下角出現浮水印來要求使用者 active Windows。
考量到環境的乾淨程度以及效能與耗電的影響,必要時我們會將他暫時移除。
//watermark.bat
@echo off
taskkill /F /IM explorer.exe
explorer.exe
exit
Permanently Fix Activate Windows Watermark [7 Possible Ways]
]]>純粹在進行作業系統相關測試時,通常不會有金鑰可以激活。
一旦連上網,不久就會在桌面右下角出現浮水印來要求使用者 active Windows。
考量到環境的乾淨程度以及效能與耗電的影響,必要時我們會將他暫時移除。
//watermark.bat
@echo off
taskkill /F /IM explorer.exe
explorer.exe
exit
Permanently Fix Activate Windows Watermark [7 Possible Ways]
]]>還好網路上有大大的文章可以參考,差點就要重灌系統了...
出現 「應用程式無法正確啟動(0xc0000135)」相關訊息
開啟命令提示字元,以指令安裝 .NET Framework
dism /online /enable-feature /featurename:NetFx4
若失敗可能是未啟用相關功能,先以指令啟用
dism /online /enable-feature /all /featurename:NetFx4
還好網路上有大大的文章可以參考,差點就要重灌系統了...
出現 「應用程式無法正確啟動(0xc0000135)」相關訊息
開啟命令提示字元,以指令安裝 .NET Framework
dism /online /enable-feature /featurename:NetFx4
若失敗可能是未啟用相關功能,先以指令啟用
dism /online /enable-feature /all /featurename:NetFx4
scss:與 Sass 之差異即是有中括號、分號(可以直接包含CSS)
// 編譯
sass style.sass style.css
// 存檔時即時編譯
sass --watch style.sass style.css
// 壓縮
sass --style=compressed style.sass style.css
以 & 符號代替自己,常用於巢狀寫法
block
color: red
&__title
font-size: 12px
&__content
font-size: 10px
要被引入的檔案,習慣於檔名前加底線
ex. _color.sass
引入後就可以使用外部檔案設定好的變數
@import 路徑(副檔名可加可不加)
@import style
@import style.sass
多用為處理共同的樣式
// sass
%btn
width: 20px
heught: 10px
.btn
&-submit
@extend %btn
&-delete
@extend %btn
編譯後會變為:
.btn-submit, .btn-delete{
width: 20px;
height: 10px;
}
適合用來打包、引用,可帶入變數
@mixin btn
width: 20px
height: 10px
.btn
&-submit
+btn
&-delete
+btn
編譯後會變為:
.btn-submit{
width: 20px;
height: 10px;
}
.btn-delete{
width: 20px;
height: 10px;
}
mixin 帶入變數
@mixin btn-hover($color)
&:hover
color: $color
.btn
&-submit
+btn-hover($primary)
&-delete
+btn-hover($warning)
function 可回傳數值,可與 mixin 搭配使用
@function functionName()
@return returnValue
宣告需在使用前,才能被成功引用!
可以理解為陣列,差別在於陣列 index 從 0 開始,而 List 則是從 1 開始
$color: red, blue, green
// 透過 nth() 使用 List
p
color: nth($color, 2)
可以理解為物件(Object),透過 map-get(變數, 鍵名)
取得資料
$color: (default: red, hover: blue, active: green)
a:hover
color: map-get($color, hover)
$direction-types: center, start, end
@each $type in $direction-types
.flex-#{$type} // 字串加入變數 #{}
display: $type
justify-content: $type
align-items: center
結果會得到
.flex-center {
display: center;
justify-content: center;
align-items: center;
}
.flex-start {
display: start;
justify-content: start;
align-items: center;
}
.flex-end {
display: end;
justify-content: end;
align-items: center;
}
$direction-types: (center: center, start: flex-start, end: flex-end)
@each $type, $value in $direction-types
.flex-#{$type} // 字串加入變數 #{}
display: $type
justify-content: $value
align-items: center
結果會得到
.flex-center {
display: center;
justify-content: center;
align-items: center;
}
.flex-start {
display: start;
justify-content: flex-start;
align-items: center;
}
.flex-end {
display: end;
justify-content: flex-end;
align-items: center;
}
適合用於設定一系列數字變化等狀況
@for $i from 0 through 5
.h#{$i+1}
font-size: 1 + 0.2rem * $i
得到結果
.h1 {
font-size: 1rem;
}
.h2 {
font-size: 1.2rem;
}
.h3 {
font-size: 1.4rem;
}
.h4 {
font-size: 1.6rem;
}
.h5 {
font-size: 1.8rem;
}
.h6 {
font-size: 2rem;
}
比較運算子為 ==
@if 判斷式
// 敘述
@else
// 敘述
更多細節可以參考 Document 的 Flow Control
為了管理與維護的便利性,通常會把相同或重複使用的 CSS 拆成各個 sass 檔,引入主要 sass 檔中再編譯成最終的 CSS 檔。
常見的 sass 檔可能會包含:
scss:與 Sass 之差異即是有中括號、分號(可以直接包含CSS)
// 編譯
sass style.sass style.css
// 存檔時即時編譯
sass --watch style.sass style.css
// 壓縮
sass --style=compressed style.sass style.css
以 & 符號代替自己,常用於巢狀寫法
block
color: red
&__title
font-size: 12px
&__content
font-size: 10px
要被引入的檔案,習慣於檔名前加底線
ex. _color.sass
引入後就可以使用外部檔案設定好的變數
@import 路徑(副檔名可加可不加)
@import style
@import style.sass
多用為處理共同的樣式
// sass
%btn
width: 20px
heught: 10px
.btn
&-submit
@extend %btn
&-delete
@extend %btn
編譯後會變為:
.btn-submit, .btn-delete{
width: 20px;
height: 10px;
}
適合用來打包、引用,可帶入變數
@mixin btn
width: 20px
height: 10px
.btn
&-submit
+btn
&-delete
+btn
編譯後會變為:
.btn-submit{
width: 20px;
height: 10px;
}
.btn-delete{
width: 20px;
height: 10px;
}
mixin 帶入變數
@mixin btn-hover($color)
&:hover
color: $color
.btn
&-submit
+btn-hover($primary)
&-delete
+btn-hover($warning)
function 可回傳數值,可與 mixin 搭配使用
@function functionName()
@return returnValue
宣告需在使用前,才能被成功引用!
可以理解為陣列,差別在於陣列 index 從 0 開始,而 List 則是從 1 開始
$color: red, blue, green
// 透過 nth() 使用 List
p
color: nth($color, 2)
可以理解為物件(Object),透過 map-get(變數, 鍵名)
取得資料
$color: (default: red, hover: blue, active: green)
a:hover
color: map-get($color, hover)
$direction-types: center, start, end
@each $type in $direction-types
.flex-#{$type} // 字串加入變數 #{}
display: $type
justify-content: $type
align-items: center
結果會得到
.flex-center {
display: center;
justify-content: center;
align-items: center;
}
.flex-start {
display: start;
justify-content: start;
align-items: center;
}
.flex-end {
display: end;
justify-content: end;
align-items: center;
}
$direction-types: (center: center, start: flex-start, end: flex-end)
@each $type, $value in $direction-types
.flex-#{$type} // 字串加入變數 #{}
display: $type
justify-content: $value
align-items: center
結果會得到
.flex-center {
display: center;
justify-content: center;
align-items: center;
}
.flex-start {
display: start;
justify-content: flex-start;
align-items: center;
}
.flex-end {
display: end;
justify-content: flex-end;
align-items: center;
}
適合用於設定一系列數字變化等狀況
@for $i from 0 through 5
.h#{$i+1}
font-size: 1 + 0.2rem * $i
得到結果
.h1 {
font-size: 1rem;
}
.h2 {
font-size: 1.2rem;
}
.h3 {
font-size: 1.4rem;
}
.h4 {
font-size: 1.6rem;
}
.h5 {
font-size: 1.8rem;
}
.h6 {
font-size: 2rem;
}
比較運算子為 ==
@if 判斷式
// 敘述
@else
// 敘述
更多細節可以參考 Document 的 Flow Control
為了管理與維護的便利性,通常會把相同或重複使用的 CSS 拆成各個 sass 檔,引入主要 sass 檔中再編譯成最終的 CSS 檔。
常見的 sass 檔可能會包含:
Missing write access to /usr/local/lib/node_modules
,心想應該是遇到了權限不足的問題。sudo chown -R $USER /usr/local
// chown(change owner)是一條在Unix系統中用於設定檔案所有者和檔案關聯組的命令
// 需要超級使用者(sudo)的權限才能執行此命令。
// -R means Recursively, means, its applied to every files in the directory
-R 為 Recursively,翻譯為遞歸,但我比較習慣遞迴。大概可以理解為他會遍歷每個資料夾內的檔案。查了資料才懂,npm 的指令果然還是博大精深啊~(成語可以這樣用嗎XD)
輸入指令後,系統會要求輸入密碼。但很奇怪的是,我的結果出現 chown: /usr/local: Operation not permitted
,卻還是成功的改了權限(?)
然後就順利地完成了 sass 的安裝啦~
從其他作者的分享看到有個方法可以查看是否已切換權限:
ls -l /usr/local
執行後則會看到顯示自己的主機名稱(jianna),若沒有權限則會顯示為 root。
Missing write access to /usr/local/lib/node_modules
,心想應該是遇到了權限不足的問題。sudo chown -R $USER /usr/local
// chown(change owner)是一條在Unix系統中用於設定檔案所有者和檔案關聯組的命令
// 需要超級使用者(sudo)的權限才能執行此命令。
// -R means Recursively, means, its applied to every files in the directory
-R 為 Recursively,翻譯為遞歸,但我比較習慣遞迴。大概可以理解為他會遍歷每個資料夾內的檔案。查了資料才懂,npm 的指令果然還是博大精深啊~(成語可以這樣用嗎XD)
輸入指令後,系統會要求輸入密碼。但很奇怪的是,我的結果出現 chown: /usr/local: Operation not permitted
,卻還是成功的改了權限(?)
然後就順利地完成了 sass 的安裝啦~
從其他作者的分享看到有個方法可以查看是否已切換權限:
ls -l /usr/local
執行後則會看到顯示自己的主機名稱(jianna),若沒有權限則會顯示為 root。
data-*
,並把資料儲存於該屬性中。
<div class="group-item" data-id="item1"></div>
此文主要是紀錄一下取出資料的方法,以免我金魚腦發作。
dataset.自訂屬性名
element.getAttribute("data-id");
element.setAttribute("data-id", "123"); // 當然也可以賦值
element.dataset.id;
element.dataset.id = "123";
也可以塞 JSON 格式
<ul>
<li data-person='
{
"name": "Chris Coyier",
"job": "Web Person"
}
'></li>
</ul>
取用時記得轉格式
let json = el.dataset.person;
let data = JSON.parse(json);
console.log(data.name); // Chris Coyier
console.log(data.job); // Web Person
$(item).data(自訂屬性名)
var a = $('#myElementID').data('myvalue'); //get myvalue
$('#myElementID').data('myvalue',38); //set myvalue
[data-id="item1"]{}
div[data-id="item1"]{}
div::before{
content: attr(data-id);
}
data-*
,並把資料儲存於該屬性中。
<div class="group-item" data-id="item1"></div>
此文主要是紀錄一下取出資料的方法,以免我金魚腦發作。
dataset.自訂屬性名
element.getAttribute("data-id");
element.setAttribute("data-id", "123"); // 當然也可以賦值
element.dataset.id;
element.dataset.id = "123";
也可以塞 JSON 格式
<ul>
<li data-person='
{
"name": "Chris Coyier",
"job": "Web Person"
}
'></li>
</ul>
取用時記得轉格式
let json = el.dataset.person;
let data = JSON.parse(json);
console.log(data.name); // Chris Coyier
console.log(data.job); // Web Person
$(item).data(自訂屬性名)
var a = $('#myElementID').data('myvalue'); //get myvalue
$('#myElementID').data('myvalue',38); //set myvalue
[data-id="item1"]{}
div[data-id="item1"]{}
div::before{
content: attr(data-id);
}
ORDER BY
,是依照預設,也就是寫入資料庫的順序去撈資料。我想著,比較直觀的做法應該是讓管理員顯示於最上方,停權者顯示於最下方。可是我在資料庫的設計上,在權限這個欄位所使用的分別是:0->停權者、1->管理員、99->一般成員
。若是依照一些常用的方法(ASC、DESC)去排序,似乎無法達到我要的效果。於是在一番搜索後,萬能的估狗大神又告訴了我答案。
這邊使用的是 FIELD(str, str1, str2, str3,...)
,說明如下:
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.
該函式會回傳指定字串在字串序列中的位置,若將回傳結果用來排序,恰好能達成我所想要的效果。
ORDER BY FIELD(role, 1, 99, 0)
登登!如此一來就大功告成啦~
不過也有爬到文說這樣做的效能並不太好,不過目前資料蠻輕量的,就先這樣做做看。
若在排序種類多的情況下,建議還是多開一張表去記錄各個類別的順序。
參考資料:
MySQL 的自訂排序
How to define a custom ORDER BY order in mySQL
ORDER BY
,是依照預設,也就是寫入資料庫的順序去撈資料。我想著,比較直觀的做法應該是讓管理員顯示於最上方,停權者顯示於最下方。可是我在資料庫的設計上,在權限這個欄位所使用的分別是:0->停權者、1->管理員、99->一般成員
。若是依照一些常用的方法(ASC、DESC)去排序,似乎無法達到我要的效果。於是在一番搜索後,萬能的估狗大神又告訴了我答案。
這邊使用的是 FIELD(str, str1, str2, str3,...)
,說明如下:
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.
該函式會回傳指定字串在字串序列中的位置,若將回傳結果用來排序,恰好能達成我所想要的效果。
ORDER BY FIELD(role, 1, 99, 0)
登登!如此一來就大功告成啦~
不過也有爬到文說這樣做的效能並不太好,不過目前資料蠻輕量的,就先這樣做做看。
若在排序種類多的情況下,建議還是多開一張表去記錄各個類別的順序。
參考資料:
MySQL 的自訂排序
How to define a custom ORDER BY order in mySQL
爬文後發現只要加上兩行語法,PHP 就會將錯誤訊息印在頁面上囉~
error_reporting(E_ALL);
ini_set('display_errors', 'On');
也可以在系統內設置上述語法的相關屬性,如此一來就能一勞永逸了。
不過我懶,所以我先在有 bug 的頁面貼上這兩行就好,ㄎㄎ。
爬文後發現只要加上兩行語法,PHP 就會將錯誤訊息印在頁面上囉~
error_reporting(E_ALL);
ini_set('display_errors', 'On');
也可以在系統內設置上述語法的相關屬性,如此一來就能一勞永逸了。
不過我懶,所以我先在有 bug 的頁面貼上這兩行就好,ㄎㄎ。
flex-shrink 默認值是 1
,若空間不足,元素將會自行縮小(壓縮)。
而當 flex-shrink 設置為 0
,則代表空間不足時不壓縮。
flex-shrink: 0;
如此一來,大頭貼就依照原先構想的樣子來顯示了,不會再因為文字過多而受到擠壓。
display: flex
是設置在外層元素(元素),而 flex-shrink 則是與 flex 搭配使用,設置在子元素上。
flex-shrink 默認值是 1
,若空間不足,元素將會自行縮小(壓縮)。
而當 flex-shrink 設置為 0
,則代表空間不足時不壓縮。
flex-shrink: 0;
如此一來,大頭貼就依照原先構想的樣子來顯示了,不會再因為文字過多而受到擠壓。
display: flex
是設置在外層元素(元素),而 flex-shrink 則是與 flex 搭配使用,設置在子元素上。
Git 可以幫助我們更有效的進行版本控制,便於多人協作、管理多個版本。
我一開始傻傻的以為它的運作模式是幫助我們儲存每一次所變更的檔案,使用時還一直很擔心我如果改了什麼內容不就會被覆蓋掉嗎?但實際上它所儲存的是我們每次所進行的變動(當你真正使用後便可以從過程中所顯示的 ++--
了解這一切XD),如此一來既可有效進行版本控管,又不會佔太大的空間,究竟要多天才才能創造出這種方法呢?(沒錯,過去我就是手動使用了多個資料夾來管理各種版本,弄到最後直接亂掉...)
至 Git官網 下載並安裝,完成後使用 Git Bash。
打開 terminal,輸入 git --version
,MacOS 10.9 以上會自動引導安裝,若無則可參考 官網說明 進行操作。
指令 | 功能 | 說明 |
---|---|---|
git init | 初始化 | 在資料夾內使用,會產生檔名為 .git 之隱藏檔案,會將需要被 git 所控制的檔名寫入檔案中 |
git status | 狀態查詢 | 查看目前狀態 commit 前: untracked 尚未加入版本控制 staged 已加入版本控制 |
git add 檔名 | 加入版本控制 | |
git add .(或資料夾名稱) | 加入版本控制 | 資料夾下所有檔案都加入版本控制 |
git rm --cached 檔名 |
取消加入版本控制 | |
git commit | 新建一個版本 | 送出後會進入 vim 編輯器 若 commit message 內容較長可以寫在裡面 內容較短則使用 git commit -m "message here (使用 -m 前 無論新舊檔案都要記得 add ) |
git commit -am "message" |
快速新建版本 | 效果等同 git add . + git commit -m -am 只對先前 add 過的檔案有效,新的檔案必須手動 add 後才能 -am |
git log | 歷史紀錄 | |
git log --oneline |
單行歷史紀錄 | |
git checkout 版本代碼 |
切換到某個版本 | |
git checkout master | 切換到 master 這個 branch 的最新狀態 |
git init
git add
將檔案加入版本控制,用 git status
檢查.gitignore
檔(記得要把這個檔案加入版本控制資料夾裡面)git commit -am "message"
git diff
指令觀看這一次改了什麼地方在發展新功能與進行 bug fixing 時,可以分頭進行(平行),做完了確定後再合併。
指令 | 功能 | 說明 |
---|---|---|
git branch -v | 看現在有哪些 branch | |
git branch branch name |
新建 branch | |
git branch -d branch name |
刪除既有 branch | |
git checkout -b branch name |
新增 branch 之後直接切換過去 | |
git merge branch name |
將 branch 併回 master | 合併後就可以把 branch 刪掉 merge 時若遇到衝突,手動解決衝突後再 commit |
新增一個 repo 之後會跑出教學說明。
git remote add origin https://github位址
git push (-u) origin master
git push origin master / branch 名稱
git pull origin master
git clone 網址 //抓到本地
fork 則是直接複製一份 repo 到自己的 github 上。
點擊 Compare & pull requests
git commit --amend
git reset HEAD^
HEAD 表示最新的 commit,^
則是代表前一個
git reset HEAD^ --hard //全都不要了,就像根本沒發生過
git reset HEAD^ --soft(預設) //commit 不要了,但修改過的檔案狀態還是在
git checkout -- 檔案名稱
git checkout --. //所有檔案
git branch -m 新名稱
git checkout branch 名稱
發生某事的時候讓程式自動通知我。
.git 資料夾 -> hooks 資料夾,裡面的小程式會有說明文字
最常使用到「在 commit 之前檢查」的功能
exit 1
:不送出 commit
exit 0
:送出 commit
Git 可以幫助我們更有效的進行版本控制,便於多人協作、管理多個版本。
我一開始傻傻的以為它的運作模式是幫助我們儲存每一次所變更的檔案,使用時還一直很擔心我如果改了什麼內容不就會被覆蓋掉嗎?但實際上它所儲存的是我們每次所進行的變動(當你真正使用後便可以從過程中所顯示的 ++--
了解這一切XD),如此一來既可有效進行版本控管,又不會佔太大的空間,究竟要多天才才能創造出這種方法呢?(沒錯,過去我就是手動使用了多個資料夾來管理各種版本,弄到最後直接亂掉...)
至 Git官網 下載並安裝,完成後使用 Git Bash。
打開 terminal,輸入 git --version
,MacOS 10.9 以上會自動引導安裝,若無則可參考 官網說明 進行操作。
指令 | 功能 | 說明 |
---|---|---|
git init | 初始化 | 在資料夾內使用,會產生檔名為 .git 之隱藏檔案,會將需要被 git 所控制的檔名寫入檔案中 |
git status | 狀態查詢 | 查看目前狀態 commit 前: untracked 尚未加入版本控制 staged 已加入版本控制 |
git add 檔名 | 加入版本控制 | |
git add .(或資料夾名稱) | 加入版本控制 | 資料夾下所有檔案都加入版本控制 |
git rm --cached 檔名 |
取消加入版本控制 | |
git commit | 新建一個版本 | 送出後會進入 vim 編輯器 若 commit message 內容較長可以寫在裡面 內容較短則使用 git commit -m "message here (使用 -m 前 無論新舊檔案都要記得 add ) |
git commit -am "message" |
快速新建版本 | 效果等同 git add . + git commit -m -am 只對先前 add 過的檔案有效,新的檔案必須手動 add 後才能 -am |
git log | 歷史紀錄 | |
git log --oneline |
單行歷史紀錄 | |
git checkout 版本代碼 |
切換到某個版本 | |
git checkout master | 切換到 master 這個 branch 的最新狀態 |
git init
git add
將檔案加入版本控制,用 git status
檢查.gitignore
檔(記得要把這個檔案加入版本控制資料夾裡面)git commit -am "message"
git diff
指令觀看這一次改了什麼地方在發展新功能與進行 bug fixing 時,可以分頭進行(平行),做完了確定後再合併。
指令 | 功能 | 說明 |
---|---|---|
git branch -v | 看現在有哪些 branch | |
git branch branch name |
新建 branch | |
git branch -d branch name |
刪除既有 branch | |
git checkout -b branch name |
新增 branch 之後直接切換過去 | |
git merge branch name |
將 branch 併回 master | 合併後就可以把 branch 刪掉 merge 時若遇到衝突,手動解決衝突後再 commit |
新增一個 repo 之後會跑出教學說明。
git remote add origin https://github位址
git push (-u) origin master
git push origin master / branch 名稱
git pull origin master
git clone 網址 //抓到本地
fork 則是直接複製一份 repo 到自己的 github 上。
點擊 Compare & pull requests
git commit --amend
git reset HEAD^
HEAD 表示最新的 commit,^
則是代表前一個
git reset HEAD^ --hard //全都不要了,就像根本沒發生過
git reset HEAD^ --soft(預設) //commit 不要了,但修改過的檔案狀態還是在
git checkout -- 檔案名稱
git checkout --. //所有檔案
git branch -m 新名稱
git checkout branch 名稱
發生某事的時候讓程式自動通知我。
.git 資料夾 -> hooks 資料夾,裡面的小程式會有說明文字
最常使用到「在 commit 之前檢查」的功能
exit 1
:不送出 commit
exit 0
:送出 commit
爬了文之後發現大多數的人都和我一樣,換了 MacOS 之後,沒有再去設定 git 上的 user 資訊,因此系統便用了預設的 username 與 email (-MacBook-Pro.local)替我們進行 commit。
有了這次教訓,以後要是換到新環境,一定都要記得先設定好作者資訊(global 即設定為全域)。
git config --global user.email "email"
git config --global user.name "username"
在爬文後根據此篇 修改 git repo 历史提交的 author 得知,可以使用 git rebase
的方法來修改,可選擇調整範圍、逐筆修改。而我原先是想使用這個方法操作的,因為我要修改的筆數大概也就只有四筆,心想應該可以很快完成。可是使用這個方法會覆蓋原有的 commit ID(算是重新提交?),這樣的操作對我這個新手來說實在是太可怕了,有好幾次我都搞混了現在所在的位置到底是哪一筆。
於是我又爬到了這個方法:修改git全部已提交的使用者名稱和郵箱,雖然我還沒搞懂它實際上用的是什麼方法,但應該是類似於直接覆蓋舊的 commit 歷史,實在是太方便啦~
#!/bin/sh
git filter-branch --env-filter '
// 只需調整以下三個變數
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
最後再 push 回遠端就可以了~
我在 push 的過程中有遇到一些衝突,不過我在操作前才又重新把遠端的檔案 clone 下來,因此就無懸念的使用了 git push --force origin master
。
由於我操作的 repo 只有我自己在使用,加上我的強迫症作祟,才會讓我極度的想把舊的 commit 改掉。若為團隊合作專案,千萬要小心使用,當然是強烈建議別這麼做,否則可能會有解不完的衝突XD。
]]>爬了文之後發現大多數的人都和我一樣,換了 MacOS 之後,沒有再去設定 git 上的 user 資訊,因此系統便用了預設的 username 與 email (-MacBook-Pro.local)替我們進行 commit。
有了這次教訓,以後要是換到新環境,一定都要記得先設定好作者資訊(global 即設定為全域)。
git config --global user.email "email"
git config --global user.name "username"
在爬文後根據此篇 修改 git repo 历史提交的 author 得知,可以使用 git rebase
的方法來修改,可選擇調整範圍、逐筆修改。而我原先是想使用這個方法操作的,因為我要修改的筆數大概也就只有四筆,心想應該可以很快完成。可是使用這個方法會覆蓋原有的 commit ID(算是重新提交?),這樣的操作對我這個新手來說實在是太可怕了,有好幾次我都搞混了現在所在的位置到底是哪一筆。
於是我又爬到了這個方法:修改git全部已提交的使用者名稱和郵箱,雖然我還沒搞懂它實際上用的是什麼方法,但應該是類似於直接覆蓋舊的 commit 歷史,實在是太方便啦~
#!/bin/sh
git filter-branch --env-filter '
// 只需調整以下三個變數
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
最後再 push 回遠端就可以了~
我在 push 的過程中有遇到一些衝突,不過我在操作前才又重新把遠端的檔案 clone 下來,因此就無懸念的使用了 git push --force origin master
。
由於我操作的 repo 只有我自己在使用,加上我的強迫症作祟,才會讓我極度的想把舊的 commit 改掉。若為團隊合作專案,千萬要小心使用,當然是強烈建議別這麼做,否則可能會有解不完的衝突XD。
]]>Command Line 通常被稱為 命令行 或 命令行介面(Command Line Interface,CLI),相較於圖形使用者介面(Graphical User Interface,GUI),這是一個以文字為主的應用程式,可以單純使用文字指令來對電腦進行操作。
rm -r downloads
就解決了。若在難以用肉眼找到目標資料夾的情況下(ex. 資料夾太多),使用 GLI 的效率更是顯而易見。指令 | 作用 | 完整名稱 | 用法 | |
---|---|---|---|---|
pwd | 印出目前所在位置 | print working directory | ||
cd | 切換資料夾 | change directory | cd 同層其它資料夾名稱 cd 絕對路徑 cd .. 回到上一層cd / 移動到根目錄 |
|
ls | 列出現在位置所有檔案 | list | ls -a 列出隱藏檔案ls -l 列出詳細資訊ls -al 列出所有檔案包括詳細資訊 |
|
clear | 清空畫面 | |||
touch | 建立 / 修改檔案 | 檔案不存在則建立檔案;檔案存在則更改最後修改時間 | ||
rm | 刪除 | remove | rm -r 刪除資料夾rm -f 強制刪除 |
|
rmdir | 刪除資料夾 | 僅能刪除空資料夾 | ||
mkdir | 建立資料夾 | make directory | ||
mv | 移動檔案或改名 | move | mv 檔名 路徑位置 mv 原檔名 新檔名 |
|
help | 指令使用說明 | 指令 --help 如 mv --help |
||
vim | 文字編輯器 | i 進入 insert 編輯模式esc 結束 insert 模式:q quit 退出:w write 存檔:wq 存檔並退出 |
||
cat | 連接檔案 顯示檔案內容 |
catenate | ||
less | 分頁式顯示檔案內容 | q 退出檢視模式 |
||
grep | 抓取關鍵字 | global regular expression print | grep 關鍵字串 檔案名稱 |
|
curl | 存取網路資源 進行 HTTP Request |
command line URL | curl command 指令 | |
date | 現在時間 | |||
echo | 印出字串 | |||
> | 重新導向 | redirection | 內容 > 檔名 會覆蓋原內容新增內容但不覆蓋可用 >> (append) |
|
` | ` | 組合指令 | pipe | 左邊指令的輸出等於右邊指令的輸入。可以想成先執行完左邊指令得到一個結果,在將此結果丟入右邊指令中執行。 |
因為我使用 Windows 無法實作這些指令,所以暫時將他們歸類在這個標題內。
指令 | 作用 | 完整名稱 | 用法 |
---|---|---|---|
man | 指令使用說明 | manual | man 指令名稱 |
cp | 複製檔案 | copy | cp 欲複製檔名 複製後檔案的檔名 對資料夾操作一樣加上 -r |
wget | 下載檔案(非內建,需安裝) | wget 位址 可用 open 或 cat 檢視下載好的檔案 |
上課前一直以為 Git-Bash 和 Windows 內建的 CMD 會是差不多的東西,用著用著才發現,咦?原來他們使用的是不同系統的語法。
Git Bash 是 Windows 版的 Git 模擬器,可使用 Linux 指令操作 Window 的檔案系統。
參考自 小狐狸事務所 - Git 學習筆記 (二) : Git Bash 基本操作
查了資料才發現他是基於 Linux 指令去操作的,所以和 Windows 指令還是有些不同,詳細內容可以參考引文連結。另外,在 ss64.com 可以查到各個作業系統的 Command Line 指令。
因為不了解作業系統,也先找了篇 Linux 自學分享文章,之後有空可以來研究研究。
Command Line 通常被稱為 命令行 或 命令行介面(Command Line Interface,CLI),相較於圖形使用者介面(Graphical User Interface,GUI),這是一個以文字為主的應用程式,可以單純使用文字指令來對電腦進行操作。
rm -r downloads
就解決了。若在難以用肉眼找到目標資料夾的情況下(ex. 資料夾太多),使用 GLI 的效率更是顯而易見。指令 | 作用 | 完整名稱 | 用法 | |
---|---|---|---|---|
pwd | 印出目前所在位置 | print working directory | ||
cd | 切換資料夾 | change directory | cd 同層其它資料夾名稱 cd 絕對路徑 cd .. 回到上一層cd / 移動到根目錄 |
|
ls | 列出現在位置所有檔案 | list | ls -a 列出隱藏檔案ls -l 列出詳細資訊ls -al 列出所有檔案包括詳細資訊 |
|
clear | 清空畫面 | |||
touch | 建立 / 修改檔案 | 檔案不存在則建立檔案;檔案存在則更改最後修改時間 | ||
rm | 刪除 | remove | rm -r 刪除資料夾rm -f 強制刪除 |
|
rmdir | 刪除資料夾 | 僅能刪除空資料夾 | ||
mkdir | 建立資料夾 | make directory | ||
mv | 移動檔案或改名 | move | mv 檔名 路徑位置 mv 原檔名 新檔名 |
|
help | 指令使用說明 | 指令 --help 如 mv --help |
||
vim | 文字編輯器 | i 進入 insert 編輯模式esc 結束 insert 模式:q quit 退出:w write 存檔:wq 存檔並退出 |
||
cat | 連接檔案 顯示檔案內容 |
catenate | ||
less | 分頁式顯示檔案內容 | q 退出檢視模式 |
||
grep | 抓取關鍵字 | global regular expression print | grep 關鍵字串 檔案名稱 |
|
curl | 存取網路資源 進行 HTTP Request |
command line URL | curl command 指令 | |
date | 現在時間 | |||
echo | 印出字串 | |||
> | 重新導向 | redirection | 內容 > 檔名 會覆蓋原內容新增內容但不覆蓋可用 >> (append) |
|
` | ` | 組合指令 | pipe | 左邊指令的輸出等於右邊指令的輸入。可以想成先執行完左邊指令得到一個結果,在將此結果丟入右邊指令中執行。 |
因為我使用 Windows 無法實作這些指令,所以暫時將他們歸類在這個標題內。
指令 | 作用 | 完整名稱 | 用法 |
---|---|---|---|
man | 指令使用說明 | manual | man 指令名稱 |
cp | 複製檔案 | copy | cp 欲複製檔名 複製後檔案的檔名 對資料夾操作一樣加上 -r |
wget | 下載檔案(非內建,需安裝) | wget 位址 可用 open 或 cat 檢視下載好的檔案 |
上課前一直以為 Git-Bash 和 Windows 內建的 CMD 會是差不多的東西,用著用著才發現,咦?原來他們使用的是不同系統的語法。
Git Bash 是 Windows 版的 Git 模擬器,可使用 Linux 指令操作 Window 的檔案系統。
參考自 小狐狸事務所 - Git 學習筆記 (二) : Git Bash 基本操作
查了資料才發現他是基於 Linux 指令去操作的,所以和 Windows 指令還是有些不同,詳細內容可以參考引文連結。另外,在 ss64.com 可以查到各個作業系統的 Command Line 指令。
因為不了解作業系統,也先找了篇 Linux 自學分享文章,之後有空可以來研究研究。
因為我是有系統潔癖的重設魔人,所以已經照表操課安裝好多次啦~
但還是記不起來到底要怎麼去進行相關設定,只好把參考的文章整理成筆記。
以免我下次重設,又要再重新找資料(嗚嗚好累)。
簡單來說就是,為什麼不使用內建終端機呢?
其實我本來使用的也不是 MacOS,可是被好幾個用蘋果系統的工程師大大燒到了,於是就敗了一台 Macbook Pro。
可以自己改樣式又可以開分頁,感覺好棒窩齁齁~
先到 官網 下載,然後安裝,就完成了。
iTerm2 Color Schemes 有各種顏色主題,可以整個打包也可以單純下載喜歡的。
這邊我是參考大大的文章直接打包。
Preferences > Profiles > Colors
在 Color Presets 的地方選擇 import,再從剛剛打包下來的檔案中選擇
iTerm2-Color-Schemes > schemes > 選擇要的顏色主題
我一樣用了大大推薦的「Tomorrow Night Eighties」,顏色比較柔和不刺眼哦!
zsh 是什麼呢,我還是沒搞懂,不過因為 Mac 系統在 Catalina 版本後就已經內建了,所以不需要再手動安裝。
而我們要裝的是這套「oh-my-zsh」,他可以幫忙處理主題、外掛等設定。
// 安裝指令
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
oh-my-zsh 內建多個主題,可以參考 這裡。
切換主題的方法則是直接修改檔案 ~/.zshrc
,把原先的 ZSH_THEME=”robbyrussell”
改成想要的主題名稱即可(這邊我是直接用 vim 編輯)。
在安裝主題後,偶爾可能會遇到有 icon 顯示不出來的問題,這時候就得安裝字型啦~
必需要支援 powerline font,才能讓我們這些小 icon 正常顯示。而網路上可以選擇的字體很多,大家再去找自己喜歡的吧~
// 大大說可以在 brew 上搜尋 nerd 找到各式字型
brew search nerd
// 用 homebrew 安裝字型,執行過的話可以跳過
brew tap homebrew/cask-fonts
// 安裝指令
brew cask install 字型名稱
安裝之後再透過以下路徑去修改:
Preferences > Profiles > Text > Font
不過我是使用 Monaco 字型,直接 整組打包,再找到 Monaco for Powerline.otf 進行安裝。
這套可以自行顯示輸入過的指定,非常方便,建議安裝。
// 安裝指令
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
// 啟用套件(~/.zshrc)
plugins=(zsh-autosuggestions)
調整提示文字顏色:
// 到下列位置修改
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
調整顯示顏色:ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=數字'
數字可以使用 0 ~ 255,或者直接填寫常用的 8 種顏色文字 black, red, green, yellow, blue, magenta, cyan and white。
我設定的是 fg=10,一個充滿少女感的粉嫩的綠~
超簡單!十分鐘打造漂亮又好用的 zsh command line 環境
如何讓 Terminal 看起來好用又好看|iTerms 2 + Oh-my-zsh 全攻略
因為我是有系統潔癖的重設魔人,所以已經照表操課安裝好多次啦~
但還是記不起來到底要怎麼去進行相關設定,只好把參考的文章整理成筆記。
以免我下次重設,又要再重新找資料(嗚嗚好累)。
簡單來說就是,為什麼不使用內建終端機呢?
其實我本來使用的也不是 MacOS,可是被好幾個用蘋果系統的工程師大大燒到了,於是就敗了一台 Macbook Pro。
可以自己改樣式又可以開分頁,感覺好棒窩齁齁~
先到 官網 下載,然後安裝,就完成了。
iTerm2 Color Schemes 有各種顏色主題,可以整個打包也可以單純下載喜歡的。
這邊我是參考大大的文章直接打包。
Preferences > Profiles > Colors
在 Color Presets 的地方選擇 import,再從剛剛打包下來的檔案中選擇
iTerm2-Color-Schemes > schemes > 選擇要的顏色主題
我一樣用了大大推薦的「Tomorrow Night Eighties」,顏色比較柔和不刺眼哦!
zsh 是什麼呢,我還是沒搞懂,不過因為 Mac 系統在 Catalina 版本後就已經內建了,所以不需要再手動安裝。
而我們要裝的是這套「oh-my-zsh」,他可以幫忙處理主題、外掛等設定。
// 安裝指令
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
oh-my-zsh 內建多個主題,可以參考 這裡。
切換主題的方法則是直接修改檔案 ~/.zshrc
,把原先的 ZSH_THEME=”robbyrussell”
改成想要的主題名稱即可(這邊我是直接用 vim 編輯)。
在安裝主題後,偶爾可能會遇到有 icon 顯示不出來的問題,這時候就得安裝字型啦~
必需要支援 powerline font,才能讓我們這些小 icon 正常顯示。而網路上可以選擇的字體很多,大家再去找自己喜歡的吧~
// 大大說可以在 brew 上搜尋 nerd 找到各式字型
brew search nerd
// 用 homebrew 安裝字型,執行過的話可以跳過
brew tap homebrew/cask-fonts
// 安裝指令
brew cask install 字型名稱
安裝之後再透過以下路徑去修改:
Preferences > Profiles > Text > Font
不過我是使用 Monaco 字型,直接 整組打包,再找到 Monaco for Powerline.otf 進行安裝。
這套可以自行顯示輸入過的指定,非常方便,建議安裝。
// 安裝指令
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
// 啟用套件(~/.zshrc)
plugins=(zsh-autosuggestions)
調整提示文字顏色:
// 到下列位置修改
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
調整顯示顏色:ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=數字'
數字可以使用 0 ~ 255,或者直接填寫常用的 8 種顏色文字 black, red, green, yellow, blue, magenta, cyan and white。
我設定的是 fg=10,一個充滿少女感的粉嫩的綠~
超簡單!十分鐘打造漂亮又好用的 zsh command line 環境
如何讓 Terminal 看起來好用又好看|iTerms 2 + Oh-my-zsh 全攻略