跳到主要內容

發表文章

目前顯示的是有「Bash」標籤的文章

Ignore files in Git without using a .gitignore file

Ignore files in Git without using a .gitignore file 在日常開發中,你可能會遇到某些檔案不希望被 Git 追蹤變更,但又不想修改專案中的 .gitignore 檔案。以下我將介紹四種在 Git 中忽略文件(但不使用 .gitignore)的常見方法,並分享每種方法的適用情境與操作方式。 1. 使用 git update-index --assume-unchanged 當你希望暫時忽略某個已經在版本控制中的檔案變更時,這個命令會非常有用。執行下列指令後,Git 會假設該檔案沒有變更,即使實際上已經做了修改。 git update-index --assume-unchanged <file> 如果未來需要取消這個忽略設定,可以執行: git update-index --no-assume-unchanged <file> 這個方法適合用於那些偶爾需要修改但又不希望被提交到版本庫的檔案,例如配置檔案或環境變數文件。 2. 使用 git update-index --skip-worktree 另一個類似的命令是 --skip-worktree 。這個選項通常用於當你需要保留檔案在版本庫中的狀態,但又不希望本地修改被 Git 追蹤。這對於那些會根據個人環境做出調整的檔案尤其適用。 git update-index --skip-worktree <file> 如果想要回復檔案變更的追蹤,則使用: git update-index --no-skip-worktree <file> 與 --assume-unchanged 不同, --skip-worktree 的設計目的是忽略本地修改,特別適用於分支間共享同一份文件而本地配置有所不同的情境 3. 使用 Git Exclude (Per-Repo) 有時候你可能不想讓某些忽略規則進入版本控制,但又希望在本地專案中使用。這時候可以利用 Git 的「排除檔案」功能,把忽略規則放在 .git/info/exclude 裡面。該檔案的語法與 .gitignore 完全相同,但它只會影響當前專案,不會提交給版本庫。 步驟如下: 打開 .git/info/exclude 檔案。 添加你想...

[解決方法] mac 作業系統上無法使用 docker

  錯誤訊息 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 原因 因為 docker 的設計是走 client-server 的架構,  如果少裝了 server 的部分就會出現以上的錯誤訊息 解決方法 因為 docker daemon 需要使用 linux kernel 上的某些功能, 所以若想要在 mac 的 OS X 上使用 docker 必須額外起一台 linux VM 給 docker daemon 用  Step 1. 安裝 virtual box $ brew install virtualbox --cask   Step 2. 安裝 docker machine $ brew install docker-machine --cask   Step 3. 設定 使用 docker-machine 建立 VM 跑容器 $docker-machine create --driver virtualbox default $docker-machine restart   輸出環境變數 $docker-machine env default 如果執行以上的指令出現錯誤訊息 Error checking TLS connection: ...  可以執行以下指令重新產生憑證 $docker-machine regenerate-certs 最後套用環境變數, 讓 docker 知道要怎麼去跟這台 VM 溝通  $eval $(docker-machine env default)   測試 若做完以上的步驟沒噴錯誤訊息的話, 可以跑個 hello-world 看看 docker daemon 有沒有起來 $docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha...

GCP Cloud Build 跨專案部署 | Use Cloud Build to deploy service to different project

前言 開發者可以將測試以及部署的腳本定義在 cloudbuild.yaml 的設定檔中, 讓 Cloud Build 照著腳本去執行指令 # Build the module. steps: - name: 'gcr.io/cloud-builders/gcloud' args: [ 'run', 'deploy', 'myapp', '--set-env-vars', 'SERVICE_ENV=stage', '--image', 'gcr.io/build-prj/myapp', '--platform', 'managed', '--region', 'us-central1' ] 但預設 Cloud Build 的服務帳號只擁有當下專案的權限, 若想要做到跨專案部署應用程式的話, 就需要授予 Cloud Build 的服務帳號在另一個專案下的部署權限 本篇文章將會簡單的介紹如何跨專案部署服務 假設我們有兩個 Project, 一個是 Build Project 用來放 Source Code 以及跑 Cloud Build, 另一個是 App Project 用來部署服務 (如下示意圖) 要實作這個機制, 首先 授予部署權限 需要授予在 Build Project (8750547431)下的 Cloud Build 的服務帳號能在 App Project (2498738606)下部署的相關權限 (如下) Service Account User Cloud Run Admin APP_PRJ=app-prj BUILD_PRJ_NUM=8750547431 # Cloud Run Admin: can deploy Cloud Run Service gcloud projects add-iam-policy-binding $APP_PRJ \ --member serviceAccount...

[Linux] Shell Script中的 {@:2} 是什麼意思

... {@:2} 是什麼意思 ... 很簡單, 就是傳入shell script的參數很多時 我們可以從中選擇出前兩個, 舉例來說: 假設我們在執行setup.sh 時帶入五個參數1, 2, 3, 4, 5 $ ./setup.sh 1 2 3 4 5 那麼在shell script中的指令 echo ${@:2} 就會印出 1 2 要注意的是  ${@:2} 的輸出是個 字串 如果想以陣列的方式取出參數的話, 可以用 ... vars =( "${@:2}" ) ...

Linux 設定永久的環境變數

前言 當我們在操作Linux系統時, 有時不免需要輸入一大串指令, 而且某些指令當中的字串, 還有可能重複出現在另一個指令中 列如: docker build -t mydockerpool.io/sample/myRestApi:latest . docker run -it RestAPI  mydockerpool.io/sample/myRestApi:latest 為了能夠偷懶一點 我們替mydockerpool.io/sample設定成環境變數 export ORIGIN= mydockerpool.io/sample 之後指令就變簡單的 docker build -t ${ORIGIN}/myRestApi:latest . docker run -it RestAPI  ${ORIGIN} /myRestApi:latest 問題是, 每次重新連到終端機時, 這些變數又要再重新設定, 非常的不方便 永久生效 如果要讓變數永久生效, 我們可以試著編輯 .bashrc vim  .bashrc 然後在最底下加入變數 , # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). ... ORIGIN = 'dockerpool.azurecr.io/samples' export ORIGIN

grep & findstr 系統內建的強大文本搜尋工具

如果想找出某些含有定字串的檔案, 除了用肉眼去一個一個找之外, 還有什麼辦法呢!? 在Ubuntu 上, 使用 grep 指令 grep - r ' notepad ' . 註: -r 表示遞迴地搜尋整個資料夾包含子目錄 若是使用Windows 的作業系統, 可以使用 findstr 指令去找 findstr /s " notepad " *.* 註: /s 表示遞迴地搜尋整個資料夾包含子目錄 若是只想輸出檔案名稱, 可以加入參數 /m  如下 findstr /s /m " notepad " *.* 若是搜尋的字串中含有空白, 那我們必須加入參數 /c 使用指定字串來搜尋 列如: findstr /s /c: " notepad open " *.*