python setup.py install 来安装python包,如何卸载呢?
只能手动删除安装的文件,可以使用如下命令
GitPython is a python library used to interact with git repositories. It provides abstractions of git objects for easy access of repository data, and additionally allows you to access the git repository more directly using either a pure python implementation, or the faster, but more resource intensive git command implementation.
安装:
reference http://packages.python.org/GitPython/0.3.1/intro.html
3、smmap
由于使用easy_install GitPython失败,于是使用 sudo python setup.py install 来安装,本人机器上的版本如下,:
命令简介:
关于tree:是repo的目录结构,git show 94cdc2be1511d765f9bc2fb05c85bda9e729d902 能显示该目录下的所以目录和文件,每一个目录需要一个tree,从tree.trees的输出有6项知道,该目录下有6个目录。可以对这6个目录分别递归显示其下的目录和文件。
直接使用git命令:
GitPython源代码cmd.py文件中 Git::_call_process 函数提供直接使用git命令接口。
python setup.py install 来安装python包,如何卸载呢?
只能手动删除安装的文件,可以使用如下命令
python setup.py install --record files.txt 记录安装后文件的路径
cat files.txt | xargs rm -rf 删除这些文件
另外sudo apt-get install python-git也能安装,但是接口会有很大的不一样,例如:
前者安装的
apt 安装的是 python-git 0.1.6-1
本文出自 “每日C” 博客,请务必保留此出处http://dailyc.blog.51cto.com/6187762/1064033
GitPython git python 的开发库
https://my.oschina.net/hopeMan/blog/141221
工程地址: https://pypi.python.org/pypi/GitPython/ 需要安装先安装: gitdb https://pypi.python.org/pypi/gitdbGitPython使用模块对象访问git配置库。 仓库操作 初始仓库对象 from git import * repo = Repo(repo_path) assert repo.bare == False
创建裸库
repo = Repo.init(repo_path,bare=True)
assert repo.bare == True
仓库数据高层接口可以新增/删除 heads/tags/remotes和访问仓库的配置信息
repo.config_reader() #获得仓库中只读的配置信息
repo.config_writer() #更新仓库中的配置信息
获取活动分支、未被管理的文件和判断是否有变更
repo.is_dirty() #返回布尔值
repo.untracked_files #返回未被管理的文件列表
克隆和初始化一个新的仓库
cloned_repo = repo.clone(to/this/path)
new_repo = repo.init(path/for/new/repo)
数据库对象 repo对象的性能优于数据库对象,repo对象一般用于获取大数据和新增对象。
GitDB 在操作大文件时,GitDB可以使用更少的内存,但处理速度慢2到5倍 repo = Repo('path/to/repo',odbt=GitDB)
GitCmdObjectDB 使用git-cat-file实例读取配置库信息,访问速度比较快,但内存占用比GitDB严重。 repo = Repo('path/to/repo',odbt=GitCmdObjectDB)
引用操作的实例 head操作 heads = repo.heads master = heads.master #lists can be accessed by name for convenience master.commit #the commit pointed to by head called master master.rename('new_name') #rename heads tag(tag通常是不变的)是一个commit或tag对象的引用 tags = repo.tags tagref = tags[0] #tag可以有一个tag对象,存储额外的信息 tagref.commit #tag总是指向一个commit repo.delete_tag(tagref) #删除一个tag repo.create_tag('my_tag') #创建一个tag 符号引用可以替代具体commit指向一个引用 head = repo.head #the head points to the active branch/ref master = head.reference #but they always point to commits master.commit #from here you use it as any other reference
访问reflog
log = master.log()
log[0] #first reflog entry
log[-1] #last reflog entry
修改引用
创建、删除各种引用和修改指向
repo.delete_head('master') #delete an existing head
master = repo.create_head('master') #create a new one
master.commit = 'HEAD~10' #set branch to another commit without changing index or working tree
创建、删除tags
new_tag = repo.create_tag('my_tag','my message')
repo.delete_tag(new_tag)
分支直接切换
new_branch = repo.craete_head('new_branch')
repo.head.reference = new_branch
git库的各种对象
git的所有对象都存在git数据库中。对象包含的信息有类型、未压缩的大小、每个对象都有一个20个字节的唯一的SHA1值。
git有四类对象Blobs、Trees、Commits and Tags
git所有的对象都可以访问,但通常是通过引用或git仓库的方法来访问,不是直接从数据库中读取。
hc = repo.head.commit
hct = hc.tree
hc != hct
hc != repo.tags[0]
hc == repo.head.reference.commit
git对象基本字段有
hct.type
hct.size
hct.hexsha
hct.binsha
索引对象可以用作git的索引,这些对象是Trees/Blobs和Submodules ,这些对象含有文件路径的信息。
hct.path #root tree has no path
hct.trees[0].path #the first subdirectory has one though
hct.mode #trees have the mode of a linux directory
hct.blobs[0].mode #blobs have a specific mode though compareable to a standard linux fs
使用stream访问blob数据或者其他对象数据
hct.blobs[0].data_stream.read() #stream object to read data from
hct.blobs[0].stream_data(open("blob_data","w")) #write data to given stream
Commit对象
commit对象包含固定commit的信息。通过引用或者指定版本可以获取到commit对象
repo.commit('master')
repo.commit('v0.1')
repo.commit('HEAD~10')
获取100指定引用上100commit
repo.iter_commits('master',max_count=100)
分页显示
显示21-30的记录
repo.iter_commits('master',max_count=10,skip=20)
headcommit = repo.head.commit
headcommit.hexsha
headcommit.parents
headcommit.author
headcommit.tree
headcommit.committer
headcommit.committed_date
headcommit.message
时间格式化
import time
time.asctime(time.gmtime(headcommit.committed_date)) #'Web May 7 05:56:02 2013'
tiem.strftime("%a,%d %b %Y %H:%M",time.gmtime(headcommit.committed_date)) #'Web,7 May 2013 05:56'
访问commit祖先
headcommit.parents[0].parents[0].parents[0].parents[0]
等价于master^^^^ 或者master~4
Tree对象
tree对象指向当前目录的内容。获取master分支最新提交的根tree对象
tree = repo.heads.master.commit.tree
通过tree对象可以获取的内容有
tree.trees #trees are subdirectories
tree.blobs #blobs are files
可以通过名称获取tree对象
tree[0] = tree['dir'] #access by index and by sub-path
blob = tree[0][0]
blob.name
blob.path
blob.abspath
有简便的方法通过子目录名称就可以获取对象
tree/"lib"
tree/"dir/file" == blob
如果指定tree对象的名称也可以直接从git数据库中读取
repo.tree() #返回<git.Tree "master">
repo.tree("c1c7214dde86...")
repo.tree('0.1.6')
遍历tree对象
tree.traverse()
for entry in tree.traverse():do_something_with(entry)
如果tree对象返回的是子模块对象,默认为是当前head的commit
索引对象
git的索引对象包含了commit变更和合并信息。通过索引对象可以获得更复杂的信息
index = repo.index
读取、添加、删除实例,Commit变更:
for stage,blob in index.iter_blobs():do_something(...) #Access blob object
for (path,stage),entry in index.entries.iteritems: pass #Access the entries directly
index.add(['my_new_file']) #add a new file to the index
index.remove(['dir/existing_file'])
new_commit = index.commit("my commit message")
通过tree或者merge创建新索引
tmp_index = Index.from_tree(repo,'HEAD~1') #load a tree into a temporary index
merge_index = Index.from_tree(repo,'base','HEAD','some_branch') #merge two trees three-way
merge_index.write('merged_index')
远程仓库
远程名称作为外部从仓库的别名,可以通过它push和fetch数据
test_remote = repo.create_remote('test','git@server:repo.git')
repo.delete_remote(test_remote) # create and delete remotes
origin = repo.remotes.origin #get default remote by name
origin.refs #local remote reference
o = origin.rename('new_origin') #rename remotes
o.fetch() #fetch,pull and push from and to the remote
o.pull()
o.push()
远程库的配置信息
o.url
修改配置信息
o.config_writer.set('pushurl','other_url')
子模块
对象比较
可以比较index和Trees或者Index和working tree 或者trees和trees以及trees和working copy
hcommit = repo.head.commit
idiff = hcommit.diff() #diff tree against index
tdiff = hcommit.diff('HEAD~1') #diff tree against previous tree
wdiff = hcommit.diff(None) #diff tree against working tree
index = repo.index
index.diff() #diff index agginst itself yielding empty idff
index.diff(None) #diff index against working copy
index.diff('HEAD') #diff index against current HEAD tree
比较返回的比较索引本质上是一个Diff对象列表,通过额外的过滤方法你可以找到你想要的内容
for diff_added in wdiff.iter_change_type('A'): do_something_with(diff_added)
分支切换
想切换分支,你需要设置HEAD指向新分支,重置index和工作区
repo.head.reference = repo.heads.other_branch
repo.head.reset(index=True,working_tree=True)
上面的方法会覆盖掉工作区中所有修改未提交的边更新,下面的方法则不会
repo.heads.master.checkout() #checkout the branch using git-checkout
repo.heads.other_branch.checkout()
直接使用git库
通过git实例使用git命令
git = repo.git
git.checkout('head',b='my_new_branch') #default command
git.for_each_ref() #'-' becomes '_' when calling it
相关推荐
GitPython库的设计理念是提供一种直观且面向对象的方式来操作Git仓库,使得对Git的操作就像处理Python对象一样简单。它通过封装Git的命令行工具,提供了高级接口,可以实现自动化工作流程,对于开发者来说,这极大地...
GitPython库的核心功能包括创建、克隆、提交、推送、拉取和分支操作,以及对Git仓库的全面管理。它通过封装Git命令行工具的输出,为Python程序员提供了一个简洁而直观的API,使得在代码中处理Git操作变得简单。 ...
GitPython GitPython是一个python库,用于与git存储库(如git-porcelain的高级)或类似于git-plumbing的低级进行交互。 它提供了git对象的抽象以方便访问存储库数据,并且添加了GitPython GitPython是一个python库,...
5. **与GitPython的关系**:Gitdb通常与GitPython库一起使用,GitPython提供了一个更高层次的API,使得开发者可以更方便地进行诸如克隆、拉取、提交等Git操作。 `.whl` 文件的使用: 在Python环境中,`.whl` 文件...
对于项目管理和版本控制,Git和GitHub是开发者不可或缺的工具,而Python的GitPython库则能让你在代码中直接操作Git。 Python的面向对象编程特性使它适合构建大型系统。类和对象的概念使得代码结构清晰,易于维护。...
GitPython库可以用来直接在Python环境中操作Git仓库。 4. 机器学习和人工智能:Python的Scikit-learn库提供了大量的机器学习算法,如分类、回归、聚类等,可以应用于集体智慧产生的数据中,发现潜在规律。...
12. **代码版本控制**:虽然不是Python的直接部分,但项目名为"mr-robot-master"可能意味着使用了Git进行版本控制,学习如何使用gitpython库进行Git操作也是其中的知识点。 这个项目可能包括了各种Python脚本,每个...
7. **版本控制**:Git是常用的版本控制系统,Python的gitpython库允许在脚本中集成Git操作。 8. **性能监控**:Python可以结合psutil库获取系统资源使用情况,如CPU、内存、磁盘和网络状态。 9. **脚本部署与打包*...
例如,可以利用GitPython库来操作Git仓库,获取代码的提交历史,进行版本分析。此外,Python的Django或Flask框架也可能用于构建系统的后端架构,提供数据存储和处理功能。 其次,Java作为一种多范式语言,尤其适合...
9. **版本控制**:Git是广泛使用的版本控制系统,Python有如gitpython库,可以方便地在Python程序中进行Git操作。 在实际工作中,Python可以用于自动化任务、数据分析、机器学习、网络编程、游戏开发等多种场景。...
Git是广泛使用的版本控制系统,Python的gitpython库提供了与Git交互的接口,使得在代码版本管理中集成DevOps流程成为可能。 八、安全与合规性 Python的OWASP ZAP、bandit等工具可用于安全扫描和代码审计,确保代码...
Python中的gitpython库能让你模拟Git的基本功能,理解分支、合并、提交、克隆等操作。 游戏开发通常涉及物理引擎和3D渲染。物理引擎如PyBox2D可以帮助你理解碰撞检测、重力等基本物理现象。对于3D渲染,Python的...
资源分类:Python库 所属语言:Python 资源全名:GitPython-2.0.1-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
6. **版本控制**:Python还可以与Git协同工作,用于版本管理和代码协作,例如使用gitpython库进行Git操作。 在开源社区,感谢文化的推广能够增加参与者的满足感,进一步激发他们对项目持续投入的热情。通过Python和...
对于Git项目,Trac需要gitPython库。 5. **其他依赖**: 可能还需要一些额外的Python库,如Pygments(用于代码高亮),Genshi(用于模板渲染),以及可能的插件所依赖的库。 6. **安装Trac**: 下载Trac的源码包,...
13. **版本控制**:Git是常用的版本控制系统,Python的gitpython库可以帮助进行与Git的交互。 "Python学习手册(第4版).pdf"可能是该主题的主要教材,涵盖以上所述的知识点。"拼吾爱 - 最新编程资源的分享下载站.url...
如果你喜欢这个想法并想要了解更多,请前往托诺,拍摄的鸟类,拍摄' git'在rust.gitpython是一个python库,用于与git存储库互动,高电平,如git -plumbing等低级。它提供了Git对象的抽象,以便于存储库数据,并添加...
Python有PyGit2和gitpython库,便于在代码中进行Git操作。同时,Git工作流如GitFlow和GitHub Flow可以帮助团队有效地协作和管理代码变更。 在安全方面,Python也有如OWASP ZAP这样的自动化安全测试工具,用于Web...
GitPython 是一个专门为 Python 开发者设计的库,它提供了高级接口来操作 Git 仓库,使得与 Git 进行交互变得更加简单和高效。这个库允许开发者以编程方式执行几乎所有的 Git 命令,包括创建、提交、分支、合并、...