我正在使用一个git存储库,需要从另一个git存储库提交,该存储库对第一个一无所知。
通常我会在reflog中使用HEAD@{x}进行筛选,但因为这个.git不知道这个reflog条目(不同的物理目录),我如何才能筛选它,或者我可以吗?
我使用git-svn。我的第一个分支使用Subversion repo中继的git-svn,下一个分支在Subversion分支上使用git-svn。
我正在使用一个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对象,并将为您选择工作。