如何使用python代码操作git代码
git简介
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git与SVN区别
Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应Git提供的一些概念和特征。
Git与SVN区别点:
1、Git是分布式的,SVN不是:这是Git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2、Git把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn、.cvs等的文件夹里。
3、Git分支和SVN的分支不同:分支在SVN中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征。
5、Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
python操作git
安装模块
pip3installgitpython
基本使用
importos fromgit.repoimportRepo #创建本地路径用来存放远程仓库下载的代码 download_path=os.path.join('NB') #拉取代码 Repo.clone_from('https://github.com/DominicJi/TeachTest.git',to_path=download_path,branch='master')
其他常见操作
###############2.pull最新代码############## importos fromgit.repoimportRepo local_path=os.path.join('NB') repo=Repo(local_path) repo.git.pull() ###############3.获取所有分支############## importos fromgit.repoimportRepo local_path=os.path.join('NB') repo=Repo(local_path) branches=repo.remote().refs foriteminbranches: print(item.remote_head) ###############4.获取所有版本############## importos fromgit.repoimportRepo local_path=os.path.join('NB') repo=Repo(local_path) fortaginrepo.tags: print(tag.name) ###############5.获取所有commit############## importos fromgit.repoimportRepo local_path=os.path.join('NB') repo=Repo(local_path) #将所有提交记录结果格式成json格式字符串方便后续反序列化操作 commit_log=repo.git.log('--pretty={"commit":"%h","author":"%an","summary":"%s","date":"%cd"}',max_count=50, date='format:%Y-%m-%d%H:%M') log_list=commit_log.split("\n") real_log_list=[eval(item)foriteminlog_list] print(real_log_list) ###############6.切换分支############## importos fromgit.repoimportRepo local_path=os.path.join('NB') repo=Repo(local_path) before=repo.git.branch() print(before) repo.git.checkout('master') after=repo.git.branch() print(after) repo.git.reset('--hard','854ead2e82dc73b634cbd5afcf1414f5b30e94a8') ###############7.打包代码############## importos fromgit.repoimportRepo local_path=os.path.join(NB') repo=Repo(local_path) withopen(os.path.join('NB.tar'),'wb')asfp: repo.archive(fp)
将上述所有的方法封装到类中以便后续的调用(后续如果你想要操作git直接拷贝使用即可)
importos fromgit.repoimportRepo fromgit.repo.funimportis_git_dir classGitRepository(object): """ git仓库管理 """ def__init__(self,local_path,repo_url,branch='master'): self.local_path=local_path self.repo_url=repo_url self.repo=None self.initial(repo_url,branch) definitial(self,repo_url,branch): """ 初始化git仓库 :paramrepo_url: :parambranch: :return: """ ifnotos.path.exists(self.local_path): os.makedirs(self.local_path)
到此这篇关于如何使用python代码操作git代码的文章就介绍到这了,更多相关python操作git内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。