在开发过程中,经常需要将其他分支(如master)的代码合并到当前开发的功能分支中。一个需求的开发,通常会涉及到不同的代码仓库。在这些存储库上,创建了具有相同名称的功能分支。如果涉及的代码库较多,或者代码合并频繁,操作起来会比较麻烦。为了更高效的钓鱼,我写了一个python脚本自动合并代码。假设路径D:\rui\work\下有两个本地代码仓库a-repo和b-repo。在a-repo和b-repo的功能分支上,需求开发正在进行中。这时需要将a-repo和b-repo的master分支分别合并到feature分支中。#引入第三方库GitPythonfromgitimportRepo#工作路径WORK_PATH=r'D:\rui\work\\'#仓库列表REPO_NAME_LIST=['a-repo','b-repo']#MergeFROM_BRANCHintoTO_BRANCHFROM_BRANCH='master'TO_BRANCH='feature'defmain():print('It'sstarted0v0\n')#遍历仓库列表,分别对REPO_NAME_LIST中的repo_name进行合并操作:#创建仓库对象repo_path=WORK_PATH+repo_namerepo=Repo(repo_path)#如果当前分支有未提交的变更,则中止操作ifrepo.is_dirty():print('{0}:请先提交当前分支的变更'.format(repo_name))exit()print('start>>>'+repo_name)#执行合并操作__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()#Switch到目标分支,并同步远程仓库的代码git.checkout(to_branch)git.pull()#将源分支的代码合并到目标分支,并将目标分支的最新代码推送到远程仓库git.merge(from_branch)git.push()如果__name__=='__main__':main()
