在开发过程中,经常需要将其他分支(如master)的代码,合并到当前开发的功能分支中。
而一个需求的开发,通常会涉及不同的代码仓库。在这些仓库上,会创建同名的功能分支。
如果涉及的代码仓库较多,或频繁合并代码,操作就显得很繁琐。为了更高效的摸鱼,于是写了一个python
脚本,用于自动合并代码。
假设D:\rui\work\
路径下,存在a-repo
、b-repo
两个本地代码仓库。在a-repo
、b-repo
的feature
分支上,正在进行需求开发。这时,需要分别将a-repo
、b-repo
的master
分支,合并到feature
分支。
# 引入第三方库 GitPython
from git import Repo
# 工作路径
WORK_PATH = r'D:\rui\work\\'
# 仓库列表
REPO_NAME_LIST = [
'a-repo',
'b-repo'
]
# 将 FROM_BRANCH 合并进 TO_BRANCH
FROM_BRANCH = 'master'
TO_BRANCH = 'feature'
def main():
print('开始啦 0v0\n')
# 遍历仓库列表,分别执行合并操作
for repo_name in REPO_NAME_LIST:
# 创建版本库对象
repo_path = WORK_PATH + repo_name
repo = Repo(repo_path)
# 若当前分支存在未提交的修改,则中止操作
if repo.is_dirty():
print('{0}: 请先提交当前分支的修改'.format(repo_name))
exit()
print('start >>> ' + repo_name)
# 执行merge操作
__merge(repo, FROM_BRANCH, TO_BRANCH)
print('end <<< ' + repo_name + '\n')
print('成功啦 ^0^')
def __merge(repo, from_branch, to_branch):
git = repo.git
# 切换到源分支,并同步远程仓库的代码
git.checkout(from_branch)
git.pull()
# 切换到目标分支,并同步远程仓库的代码
git.checkout(to_branch)
git.pull()
# 将源分支的代码合并到目标分支,并将目标分支的最新代码推送到远程仓库
git.merge(from_branch)
git.push()
if __name__ == '__main__':
main()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。