首页 > 解决方案 > 如何在 gitpython 中快速“合并”?

问题描述

编辑:这是被编辑的,因为我在示例中犯了一个错误。


假设我有一个非常简单的 git 结构:

  1. 一个远程分支,称为“brem”
  2. 一个本地的,称为“集团”


    self._repo = git.Repo(args.full_path_to_repo)

对 a 进行了更改后bloc,我可以将其推送到远程使用

self._repo.git.add(update=True)
self._repo.index.commit("commit_message")
origin = self._repo.remote(name=self.origin_name)
origin.push()

我现在想将此更改合并到另一个本地存储库中。

我愿意

def _pull(self):
    origin = self._repo.remote(name=self.origin_name)
    try:
        origin.pull()
    except git.exc.GitCommandError as ex:
        print "There was nothing new to pull"
        return

正确拉动遥控器。

然后我尝试

    origin = self._repo.remote(name=self.origin_name)
    self._repo.git.merge(origin)

这给出了一个例外:

标准错误:'合并:bitbucket_repo - 不是我们可以合并的东西'


假设没有冲突,将拉取的更改从远程分支合并brem到本地分支的正确方法是什么?bloc


编辑2:

我设法让它简单地工作

self._repo.git.execute('git pull')

但这违背了使用库的目的。
我仍然希望看到这样做的正确方法

标签: pythongitgitpython

解决方案


您需要从远程指定一个 git 引用以合并到当前 HEAD。如果它是一个分支并且你知道你会做的分支名称:

self._repo.git.merge(origin.heads["branch_name"])

在此处查看有关在 gitpython 中访问参考的文档:https ://gitpython.readthedocs.io/en/stable/tutorial.html#advanced-repo-usage


推荐阅读