gpt4 book ai didi

python - Gitpython 初始化并推送新的存储库

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:05 26 4
gpt4 key购买 nike

所以我尝试使用 gitpython ( https://gitpython.readthedocs.io/en/stable/intro.html ) 来做一些相对简单但遇到麻烦的事情。

因此,我的 bitbucket 服务器上有一个空白的全新存储库,然后我使用 gitpython 初始化本地存储库、添加文件并成功提交。

但是,我遇到的麻烦是将这些更改推送到我拥有的全新空白远程 bitbucket 存储库。我尝试过很多事情但我总是得到git push --set-upstream origin master 作为返回的错误。但是当我导航到 repo 目录时,我可以看到它位于 master 分支上,并且当我运行 git status 和 git remote -v 时我可以看到远程仓库 URL >.

def commit_files(url):
repo_dir = os.path.join(os.getcwd(), 'tmp')
file_name = os.path.join(repo_dir, 'Jenkinsfile')

repo = git.Repo.init(repo_dir)
open(file_name, "wb").close()
repo.index.add([file_name])
repo.index.commit("initial commit")
repo.create_remote("origin", url=url)
repo.remote("origin").push()

我发现的所有文档和 SO 帖子似乎都只是在克隆后推送到已经存在的存储库。

最佳答案

这也给我带来了困难,因为我尝试了和你一样的方法,显然:

  1. 创建一个新的远程 Git 存储库。

  2. 创建一个新的本地 Git 存储库(而不是克隆远程存储库)。

  3. 向我的本地存储库添加一些更改。

  4. 尝试将我的更改推送到远程存储库。

我终于找到了丢失refspec失败的原因本地和远程存储库之间:

In the default case that is automatically written by a git remote add origin command, Git fetches all the references under refs/heads/ on the server and writes them to refs/remotes/origin/ locally.

可以通过向 .push() 方法添加 refspec 来解决这个问题,如下所示:

repo.remote("origin").push('+refs/heads/*:refs/remotes/origin/*')

这应该是可以避免的,但我不知道如何避免;作者似乎更喜欢人们应用解决方法,而不是在 Github Issue #549 回答如何执行此操作的问题。

关于python - Gitpython 初始化并推送新的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com