git命令提供一整套操作命令,但是如果一個一個操作的話有點麻煩,如果僅僅是正常的合並操作的話,那么完全是沒有必要做那么多操作的; 如果遇到了沖突,那么提示我們修改就好了。
按照這個需求,寫了一套git操作命令:
echo "歡迎來到git流水線工廠!共10步" echo "1/10- 獲取當前GIT倉庫里面當前分支名" branchName=`git symbolic-ref --short -q HEAD` ##獲取當前分支名 echo "當前分支名稱: $branchName" echo "2/10- 請輸入本次提交GIT倉庫的說明信息(fix,refactor):" read commitMessage echo "3/10- 請選擇要發布的對象:" echo "1-shop" echo "2-sso" echo "3-全部(shop,sso,crm)" echo "其他=1" read ciPosition ciName="shop" if [ -z "$ciPosition" ]; then ciName="shop" elif [ "$ciPosition" == "2" ]; then ciName="sso" elif [ "$ciPosition" == "3" ]; then ciName="帥哥" else ciName="shop" fi echo "您選擇要執行CI發布的對象為:$ciName" echo "4/10- 正在執行:將本地修改的內容提交到本地GIT擱置區..." git stash echo "5/10- 正在執行:拉取GIT遠程倉庫代碼..." git pull origin $branchName echo "6/10- 正在執行:將本地GIT擱置區里最新修改的內容還原到本地GIT未暫存區..." git stash pop echo "7/10- 正在執行:檢查合並代碼是否存在沖突..." #如果你修改本文件,請手動提交 chongtu=`git diff dev | grep "<<<"` if [ -n "$chongtu" ]; then echo -e "\033[31m 合並代碼存在沖突!!! 請手動合並后再試... \033[0m" else echo "合並代碼沖突檢查結果:正常..." echo "8/10- 將本地GIT未暫存區最新修改的內容提交到本地GIT暫存區..." git add . echo "9/10- 正在執行:將本地GIT暫存區最新修改的內容提交到本地GIT倉庫..." git commit -m "$commitMessage" echo "10/10- 正在執行:將本地GIT倉庫最新修改的內容推送到遠程GIT倉庫,同時執行GitLab CI/CD自動化操作..." git push -o ci.variable="MESHOP_BUILD_ONLY=$ciName" origin $branchName # echo 8- 正在執行:清除本地GIT擱置區里所有內容(流程執行有問題)... # git stash clear echo -e "\033[32m 這一波GIT騷操作全部已完整... \033[0m" fi read -p "請按任意鍵退出!" -n 1