我正在使用一个 git 存储库,该存储库需要来自另一个不了解任何内容的 git 存储库的提交。
通常,我会HEAD@{x}进行选择,但是由于此.git对此 reflog 条目(不同的物理目录)一无所知,我该如何选择它,还是可以?
我正在使用git-svn 。我的第一个分支使用trunk git-svn ,下一个分支使用 Subversion 分支上的git-svn
给出的答案是使用 format-patch,但是由于问题是如何从另一个文件夹中挑选,下面是一段代码来做到这一点:
$ git --git-dir=../<some_other_repo>/.git \
format-patch -k -1 --stdout <commit SHA> | \
git am -3 -k(来自@cong ma 的解释)
git format-patch命令从其 SHA 指定的some_other_repo提交中创建补丁(对于单个提交,则为-1该补丁通过管道传递到git am,后者在本地应用补丁(-3表示如果补丁不能干净地应用,则尝试三路合并)。希望能解释。
您需要将另一个存储库添加为远程存储库,然后获取其更改。从那里您可以看到提交,并且可以对其进行挑选。
像那样:
git remote add other https://example.link/repository.git
git fetch other现在,您拥有所有信息,可以简单地执行git cherry-pick 。
有关在此处使用遥控器的更多信息: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
这是 remote-fetch-merge 的示例。
cd /home/you/projectA
git remote add projectB /home/you/projectB
git fetch projectB那么你就可以:
git cherry-pick <first_commit>..<last_commit>或者你甚至可以合并整个分支
git merge projectB/master