任务是
CLI命令可以正常工作,但是我需要使用python来完成,当我运行此代码时,将打开一个github登录对话框,输入凭据,然后执行推送,但是在远程存储库上看不到任何内容,我们不能进行任何推送?
我也尝试过使用子过程模块,它不起作用。我检查了所有其他stackoverflow解决方案,但没有找到有效的解决方案。我需要一个新的解决方案或对此aap进行更正。谢谢。
import git
git.Repo.clone_from('https://github.com/kristej/Uniform-Database-Management.git','Uniforms')
repo = git.Repo('Uniforms')
target_repo = "https://github.com/kristej/Jojorabit.git"
# List remotes
# Reference a remote by its name as part of the object
print(f'Remote name: {repo.remotes.origin.name}')
print(f'Remote URL: {repo.remotes.origin.url}')
# Delete a default remote if already present
if repo.remotes.origin.url != target_repo:
repo.delete_remote(repo.remotes.origin.name)
# Create a new remote
try:
remote = repo.create_remote('origin', url=target_repo)
except git.exc.GitCommandError as error:
print(f'Error creating remote: {error}')
# Reference a remote by its name as part of the object
print(f'Remote name: {repo.remotes.origin.name}')
print(f'Remote URL: {repo.remotes.origin.url}')
#Push changes
print(repo.git.push("origin", "HEAD:refs/for/master"))
我们不能推什么吗?
是。如果没有什么可推动的,那么推动将成功。
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git push
Everything up-to-date
但是您要推到一个奇怪的位置。HEAD:refs/for/master
说推HEAD
到refs/for/master
。refs/for/master
不是一回事。我想你的意思是refs/heads/master
。
但是除非真正需要,否则您不应该指定目的地,这HEAD
不是master
吗?让Git找出源(当前签出的分支)及其目的地(当前分支的上游,或基于的最佳猜测push.default
)。
您只需进行大量更改即可origin
,而无需再次指定。同样,根据本地分支配置,让push推算到哪里更安全。
print(repo.git.push())
您也不需要一键更改origin
。您可以改为添加一个新的遥控器并推送到该遥控器。
repo.create_remote('other_remote', url=target_repo)
repo.git.push("other_remote")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句