🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

使用 git push 時,有時會不小心推錯分支!
你不想確認一下當前的分支嗎?

這時候,就請讓金城武幫你說「等一下」。

git hooks

這篇文章將利用 Git 內建的 git hooks 解決方案。

※ 本文將省略 git hooks 的詳細說明。

Git 鉤子是一個用於在執行 Git 命令的前後執行特定腳本的機制。
例如,使用叫做 pre-commit 的 Git 鉤子,可以在執行 git commit 之前執行任意腳本。利用這個特性,可以檢查提交訊息中是否包含問題或票證的編號,若未包含則中止提交等處理。
https://qiita.com/noraworld/items/c562de68a627ae792c6c

上述文章,解釋得非常清楚。

自動化確認當前分支的操作

本文將利用 git hooks 的 pre-push 鉤子來啟動「等一下」的提示。

關於 pre-push 鉤子

當執行 git push 時,此鉤子在遠端引用更新後、物件傳輸開始前執行。此鉤子接受遠端的名稱和位置作為參數,並從 stdin 接收即將更新的引用列表。此鉤子可用於在進行推送之前檢查將要更新的引用(若返回非零值則推送會中斷)。
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF#:~:text=%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99%E3%80%82-,pre%2Dpush%20%E3%83%95%E3%83%83%E3%82%AF,-%E3%81%AF%E3%80%81%20git

操作步驟

※ 會提供在版本庫中的設定方法,而非全局設定。
※ 關於全局設定,請參考以下文章。

1. 移動到 git 管理的專案根目錄

請使用 cd 等命令進入。

2. 確認 .git/hooks

使用 find 命令確認,應該可以看到以下檔案。

$ find .git/hooks

.git/hooks
.git/hooks/commit-msg.sample
.git/hooks/pre-rebase.sample
.git/hooks/sendemail-validate.sample
.git/hooks/pre-commit.sample
.git/hooks/applypatch-msg.sample
.git/hooks/fsmonitor-watchman.sample
.git/hooks/pre-receive.sample
.git/hooks/prepare-commit-msg.sample
.git/hooks/post-update.sample
.git/hooks/pre-merge-commit.sample
.git/hooks/pre-applypatch.sample
.git/hooks/pre-push.sample  # 本次將使用此檔案。
.git/hooks/update.sample
.git/hooks/push-to-checkout.sample

3. 檔案重新命名

移除 sample 擴展名。

mv .git/hooks/pre-push.sample .git/hooks/pre-push

4. 實作腳本

編輯 .git/hooks/pre-push

#!/bin/sh

# 取得當前的分支名稱
current_branch=$(git rev-parse --abbrev-ref HEAD)

echo >&2 "------------------------------------------------------------------------"
echo >&2 "等一下。要推送分支 (${current_branch}) 嗎? (y/n): "
echo >&2 "------------------------------------------------------------------------"

read -r answer < /dev/tty

if [ "$answer" != "y" ]; then
  echo >&2 "已中止推送。"
  exit 1
fi

# 若輸入為 "y",則繼續推送
exit 0

※ 我對 shell 不太在行,抱歉。使用時請在您自己的環境中測試。
※ 「等一下。」這句話不是強制性的。

5. 賦予執行權限

chmod +x .git/hooks/pre-push

※ 根據環境,有時可能不需要此步驟。

6. 確認功能運作

git push
------------------------------------------------------------------------
等一下。要推送分支 (kimutaku/come-on) 嗎? (y/n):
------------------------------------------------------------------------
y
Everything up-to-date

運作得不錯呢。
果然能即時目視確認分支名稱讓人安心。

總結

雖然導入的時間不長,但我感覺可以減少誤操作。
根據想法,似乎不僅僅能確認分支,還能做更多事情。

順便說一下...。

「等一下」這句確認訊息,
由於我還是會不小心忘記更改,於是我決定暫時與金城武一起開發。


原文出處:https://qiita.com/umekikazuya/items/6d92fb70bf3c709ceb52


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝22   💬9   ❤️6
596
🥈
我愛JS
📝4   💬14   ❤️7
271
🥉
御魂
💬1  
3
#4
2
#5
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付