pick a commit from another git repository?

I'm working with a git repository that needs a commit from another git repository that knows nothing of the first.

Typically I would cherry-pick using the HEAD@{x} in the reflog, but because this .git knows nothing of this reflog entry (different physical directory), how can I cherry-pick this, or can I?

I'm using git-svn . My first branch is using git-svn of the trunk of a Subversion repo, and the next branch is using git-svn on a Subversion branch.


You'll need to add the other repository as a remote, then fetch its changes. From there you see the commit and you can cherry-pick it.

Like that:

git remote add other https://example.link/repository.git
git fetch other

Now you have all the information to simply do git cherry-pick .

More info about working with remotes here: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes


The answer, as given, is to use format-patch but since the question was how to cherry-pick from another folder, here is a piece of code to do just that:

$ git --git-dir=../<some_other_repo>/.git 
format-patch -k -1 --stdout <commit SHA> | 
git am -3 -k

(explanation from @cong ma)

The git format-patch command creates a patch from some_other_repo 's commit specified by its SHA ( -1 for one single commit alone). This patch is piped to git am , which applies the patch locally ( -3 means trying the three-way merge if the patch fails to apply cleanly). Hope that explains.


Here's an example of the remote-fetch-merge.

cd /home/you/projectA
git remote add projectB /home/you/projectB
git fetch projectB

Then you have a choice:

git merge projectB/master

or:

git cherry-pick <first_commit>..<last_commit>
链接地址: http://www.djcxy.com/p/68742.html

上一篇: 如何通过提交消息来搜索Git存储库?

下一篇: 从另一个git仓库挑选一个提交?