我正在使用一个 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