我正在使用一个git存储库,需要从另一个git存储库提交,该存储库对第一个一无所知。

通常我会在reflog中使用HEAD@{x}进行筛选,但因为这个.git不知道这个reflog条目(不同的物理目录),我如何才能筛选它,或者我可以吗?

我使用git-svn。我的第一个分支使用Subversion repo中继的git-svn,下一个分支在Subversion分支上使用git-svn。


当前回答

假设A是你想要从中挑选的回购,B是你想要挑选的,你可以通过添加</path/到/repo/A/>/来做到这一点。git/objects到</path/to/repo/B>/.git/objects/info/alternates。如果不存在,则创建此备用文件。

这将使repo B访问所有来自repo A的git对象,并将为您选择工作。

其他回答

你可以这样做,但是需要两个步骤。方法如下:

git fetch <remote-git-url> <branch> && git cherry-pick FETCH_HEAD

将<remote-git-url>替换为您想从中选择的存储库的url或路径。

将<branch>替换为您想要从远程存储库中挑选的分支或标记名称。

你可以用分支中的git SHA替换FETCH_HEAD。

更新:根据@pkalinow的反馈进行了修改。

下面是添加远程、获取分支和选择提交的步骤

# Cloning our fork
$ git clone git@github.com:ifad/rest-client.git

# Adding (as "endel") the repo from we want to cherry-pick
$ git remote add endel git://github.com/endel/rest-client.git

# Fetch their branches
$ git fetch endel

# List their commits
$ git log endel/master

# Cherry-pick the commit we need
$ git cherry-pick 97fedac

来源:https://coderwall.com/p/sgpksw

这里有一个很容易从记忆中打出来的,灵感来自@radicand的评论。 这取决于伪造的能力,但Github, Gitlab和Gitea肯定支持它。

你将.patch附加到提交URL并通过git am应用它:

curl --location URL.patch | git am

——location使它跟随重定向,这可以发生在例如从pull请求复制补丁时

我的情况是,我有一个裸回购,团队推动,和一个克隆的旁边。Makefile中的这组行对我来说是正确的:

git reset --hard
git remote update --prune
git pull --rebase --all
git cherry-pick -n remotes/origin/$(BRANCH)

通过保持裸回购的主人是最新的,我们能够挑选对裸回购发布的建议更改。我们还有一种(更复杂的)方法来挑选多个分支来进行合并审查和测试。

如果“一无所知”意味着“不能用作遥控器”,那么这并没有什么帮助,但是当我在谷歌上搜索这个工作流时,这个SO问题出现了,所以我想我应该做出贡献。

假设A是你想要从中挑选的回购,B是你想要挑选的,你可以通过添加</path/到/repo/A/>/来做到这一点。git/objects到</path/to/repo/B>/.git/objects/info/alternates。如果不存在,则创建此备用文件。

这将使repo B访问所有来自repo A的git对象,并将为您选择工作。