Python實現(xiàn)自動化GIT提交的示例代碼
在日常開發(fā)中,我們經(jīng)常需要頻繁地向 Git 倉庫提交代碼。雖然 git add、git commit、git push 這幾個命令并不復(fù)雜,但重復(fù)操作容易出錯,也浪費(fèi)時間。本文將介紹如何使用 Python 腳本自動化完成 Git 提交流程,讓開發(fā)更高效!
實現(xiàn)思路
我們將使用 Python 的 subprocess 模塊來調(diào)用系統(tǒng)中的 Git 命令。腳本會依次執(zhí)行以下操作:
- 檢查工作目錄狀態(tài)
- 添加所有變更文件到暫存區(qū)
- 提交變更(帶提交信息)
- 推送到遠(yuǎn)程倉庫
完整代碼
import subprocess
import sys
from datetime import datetime
def run_command(command):
"""
執(zhí)行系統(tǒng)命令并返回結(jié)果
:param command: 命令字符串或列表
:return: (成功標(biāo)志, 輸出信息)
"""
try:
# 如果傳入字符串,則分割成列表
if isinstance(command, str):
command = command.split()
# 執(zhí)行命令
result = subprocess.run(command, capture_output=True, text=True, check=True)
return True, result.stdout.strip()
except subprocess.CalledProcessError as e:
return False, f"命令執(zhí)行失敗: {e.stderr.strip()}"
except Exception as e:
return False, f"未知錯誤: {str(e)}"
def git_auto_commit(commit_message=None):
"""
自動化Git提交
:param commit_message: 提交信息,若為空則使用默認(rèn)信息
"""
print("?? 開始自動化Git提交流程...\n")
# 1. 檢查是否在Git倉庫中
success, output = run_command("git status")
if not success:
print("? 錯誤: 當(dāng)前目錄不是Git倉庫或Git未安裝。")
print(output)
return
print("? 檢測到Git倉庫,狀態(tài)檢查通過。")
# 2. 獲取當(dāng)前分支信息
success, branch = run_command("git branch --show-current")
if success:
print(f"?? 當(dāng)前分支: {branch}")
else:
print("?? 無法獲取分支信息。")
# 3. 添加所有變更文件
print("\n?? 正在添加所有變更文件到暫存區(qū)...")
success, output = run_command("git add .")
if not success:
print(f"? 文件添加失敗: {output}")
return
print("? 所有文件已添加。")
# 4. 構(gòu)造提交信息
if not commit_message:
commit_message = f"Auto-commit from Python script on {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
# 5. 執(zhí)行提交
print(f"\n?? 正在提交變更: {commit_message}")
success, output = run_command(["git", "commit", "-m", commit_message])
if not success:
# 如果沒有變更需要提交,git commit 會失敗,但這是正常情況
if "nothing to commit" in output:
print("? 倉庫已是最新,無需提交。")
# 仍然繼續(xù)推送,以防有新的標(biāo)簽或其他更新
else:
print(f"? 提交失敗: {output}")
return
else:
print("? 提交成功!")
# 6. 推送到遠(yuǎn)程倉庫
print("\n?? 正在推送到遠(yuǎn)程倉庫...")
success, output = run_command("git push")
if not success:
print(f"? 推送失敗: {output}")
print("?? 請檢查網(wǎng)絡(luò)連接、遠(yuǎn)程倉庫地址和認(rèn)證信息(如SSH密鑰或Token)。")
return
print("? 推送成功!")
print(f"\n?? 自動化提交流程已完成!")
# 7. 顯示最終狀態(tài)
print("\n?? 最終倉庫狀態(tài):")
success, status = run_command("git status --short")
if success:
if status:
print("?? 以下文件未跟蹤或有未提交的更改:")
print(status)
else:
print("? 倉庫狀態(tài)干凈,所有更改已提交并推送。")
else:
print("無法獲取最終狀態(tài)。")
if __name__ == "__main__":
# 可以從命令行參數(shù)獲取提交信息
message = None
if len(sys.argv) > 1:
message = " ".join(sys.argv[1:])
git_auto_commit(message)使用方法
1.保存代碼:將上述代碼保存為 auto_git.py。
2.確保環(huán)境:
- 系統(tǒng)已安裝 Git,并配置好 SSH 密鑰或憑據(jù)管理器(推薦使用 SSH 或 Personal Access Token)。
- Python 環(huán)境正常(腳本兼容 Python 3.6+)。
3.運(yùn)行腳本:
使用默認(rèn)提交信息:
python auto_git.py
指定自定義提交信息:
python auto_git.py "修復(fù)了登錄頁面的樣式問題"
輸出示例
?? 開始自動化Git提交流程...
? 檢測到Git倉庫,狀態(tài)檢查通過。
?? 當(dāng)前分支: main
?? 正在添加所有變更文件到暫存區(qū)...
? 所有文件已添加。
?? 正在提交變更: Auto-commit from Python script on 2025-07-29 16:45:30
? 提交成功!
?? 正在推送到遠(yuǎn)程倉庫...
? 推送成功!
?? 自動化提交流程已完成!
?? 最終倉庫狀態(tài):
? 倉庫狀態(tài)干凈,所有更改已提交并推送。
注意事項
安全性:此腳本直接執(zhí)行系統(tǒng)命令,請確保在可信環(huán)境中運(yùn)行。
錯誤處理:腳本包含了基本的錯誤處理,但復(fù)雜情況(如合并沖突)仍需手動干預(yù)。
憑證:首次推送或憑證過期時,Git 可能會提示輸入用戶名/密碼或使用 SSH 密鑰。建議配置 SSH 免密或使用 Personal Access Token。
靈活性:你可以根據(jù)需要修改 git add . 為更精確的路徑,或者添加 git pull 在推送前先拉取更新。
結(jié)語
這個簡單的 Python 腳本可以大大簡化你的 Git 提交流程,特別適合于需要頻繁提交小改動的場景(如筆記、文檔更新)。你可以將其集成到 IDE、編輯器或作為定時任務(wù)運(yùn)行,進(jìn)一步提升開發(fā)效率!
到此這篇關(guān)于Python實現(xiàn)自動化GIT提交的示例代碼的文章就介紹到這了,更多相關(guān)Python自動化GIT提交內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
跟老齊學(xué)Python之集成開發(fā)環(huán)境(IDE)
IDE的全稱是:Integrated Development Environment,簡稱IDE,也稱為Integration Design Environment、Integration Debugging Environment,翻譯成中文叫做“集成開發(fā)環(huán)境”,在臺灣那邊叫做“整合開發(fā)環(huán)境”。2014-09-09

