klm*_*123 2 svn git version-control patch git-commit
如何将提交链从一个 git(或 svn)存储库复制到另一个存储库?
如果我只有一次提交,我会这样做:
cd Git1
git diff commitHash^ commitHash > patch.txt
cd Git2
git branch CommitsFromGit1
git checkout CommitsFromGit1
patch -i ....Git1/patch.txt
git ci -am "CommitFromGit1Name"
Run Code Online (Sandbox Code Playgroud)
但我的提交太多,无法一一手动进行。有没有办法创建某种带有一组提交更改的多补丁?
让我们将您的 git 称为 A 和 B,并假设您正在 master 分支上工作。在 git A 中,将 B 添加为远程并将其内容提取到 A 中:
git remote add B /path/to/B
git fetch B
Run Code Online (Sandbox Code Playgroud)
(您不必将其添加为远程;git fetch /path/to/B master:B/master
如果您愿意,您可以这样做。这会复制 B 中的所有分支,这在您的情况下可能是不必要的。请随意指定显式的 refspec 来限制获取。)
现在,您可以用于git-cherrypick
将单个提交从 B 复制到 A,或用于git rebase --onto
复制多个提交。后一个命令具有以下一般形式:
git rebase --onto destination boundary starting_point
Run Code Online (Sandbox Code Playgroud)
Git 向后行走,starting_point
直到到达boundary
并将生成的提交(不包括boundary
)复制到 的顶端destination
。因此,这会将最近的三个提交从 B 的 master 分支复制到 A 的 master 分支:
git rebase --onto master B/master~3 B/master
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
703 次 |
最近记录: |