你有没有遇到过这种情况,明明刚看完Git教程,过两天就又忘了怎么切分支,合并代码时更是手心冒汗。我懂,我这人记性也不好,每次提代码都战战兢兢,生怕一个git push把同事的代码给覆盖了。
后来我发现一个办法,用Python写几个脚本,把那些容易忘的操作自动化。这样一来,Git变成了点按钮就完事儿的工具,再也不用死记硬背命令了。
先说你最怕的事,提错代码。比如改了半天,结果发现自己还在master分支上,一提交就把线上代码给覆盖了。我的办法是写个Python脚本,每次提交前自动检查当前分支。
def check_branch(): import subprocess result = subprocess.run(['git', 'branch', '--show-current'], capture_output=True, text=True) branch = result.stdout.strip() if branch == 'master': print('警告,你现在在master分支,不能直接提交') return False return True把这个脚本放在项目根目录,每次提交前跑一下。如果是在master分支,脚本就会把你拦住。这招救过我很多次了。
再说说合并代码。手动合并最怕冲突,一冲突就头大。你可以写个Python脚本帮你自动拉取最新代码,然后合并。遇到冲突时它会停下来,让你手动处理,处理完再继续。
def auto_merge(): subprocess.run(['git', 'pull', '--rebase']) subprocess.run(['git', 'checkout', 'develop']) subprocess.run(['git', 'merge', 'feature-branch']) print('合并完成,如果看到冲突,请手动解决')这段代码看起来很朴素,但实际用起来很踏实。你不需要记住先pull还是先merge,Python会帮你按顺序来。
还有一种情况,改了一天代码,最后发现自己改错了,想回到某个节点。Git有很多reset、revert的命令,我经常搞混。现在我用Python写了个简单的版本管理脚本,只保留最近5个版本的状态,想回退就回退到任意一个。
def rollback_to_version(version_num): commits = subprocess.run(['git', 'log', '--oneline', '-10'], capture_output=True, text=True) lines = commits.stdout.strip().split('\n') if version_num < len(lines): commit_id = lines[version_num].split()[0] subprocess.run(['git', 'reset', '--hard', commit_id]) print(f'已经回退到版本{version_num}')这个脚本跑起来,你只需要输入一个数字,比如1就是回到上一个版本。不用再绞尽脑汁想git reset --hard后面跟什么参数了。
最后说一个我内心最害怕的操作,就是不小心把敏感信息提交到Git仓库。密码、密钥这种东西一旦提交,就很难清理干净。我写了个脚本,每次提交前自动扫描所有代码文件,如果发现疑似密钥的内容就阻止提交。
def scan_sensitive_info(): import os patterns = ['password=', 'secret_key=', 'api_key='] for root, dirs, files in os.walk('.'): for file in files: if file.endswith(('.py', '.env', '.config')): with open(os.path.join(root, file), 'r') as f: content = f.read() for pattern in patterns: if pattern in content: print(f'发现敏感信息,在{file}里') return False return True这些脚本我都保存在一个git_tools目录里,每次要用就复制到项目根目录下执行。你也可以把它们加到系统路径里,这样在任意目录下都能直接调用。
有人可能会问,这不就是多了一层封装吗,跟直接记命令有什么区别。区别大了去了,命令是死的,脚本是活的。你可以把多个操作组合在一起,一个脚本干好几件事。比如我写了个一键部署脚本,自动拉代码、检查分支、运行测试、然后部署到测试环境,全在一个Python脚本里完成。再也不用手动一步步操作了。
用Python操作Git还有个好处,你可以在执行每个操作前后做检查。比如合并代码前先看看有没有未提交的文件,提交前看看有没有代码风格问题。这些检查逻辑都可以写在Python里,比Git自身的钩子灵活多了。
你现在就可以试试,把那些让你焦虑的Git操作挑出来,用Python写个脚本。记不住命令没关系,让Python帮你记住。代码提错了也不怕,脚本会在最后一关把你拦住。
Git这东西,懂不懂不重要,重要的是别把项目搞坏了。用Python兜住底,想出事都难。