NaH*_*eon 3 svn git merge git-merge
我正在尝试使用git read-tree.
问题是,合并文件的先前提交历史消失了。我确实逐个文件地检查了文件。
我遵循了基于这篇文章进行子树合并的正常方法:
6.7 Git 工具 - 子树合并
$ git remote add rack_remote git@github.com:schacon/rack.git
$ git fetch rack_remote
$ git checkout -b rack_branch rack_remote/master
$ git read-tree --prefix=rack/ -u rack_branch
Run Code Online (Sandbox Code Playgroud)
我当前的工作区结构如下所示:
project P
- repoA
- repoB
- repoC
(... and many more repos)
Run Code Online (Sandbox Code Playgroud)
我想改变它们的层次结构,就像:
project P
- repoA <=== have repoB and repoC inside.
Run Code Online (Sandbox Code Playgroud)
我无法在上面的示例中看到合并文件的历史记录,也无法在git log结果中看到。
(我想强调我的 repos 是 svn 克隆的,仍然链接到 svn 存储库。这会影响读取树行为吗?)
编辑:我尝试使用原始 Github 存储库,问题是相同的。
您描述的步骤不会将合并的历史添加为第二个父级。从链接中的文字来看,这似乎是他们的意图。由于您的意图不同,您应该稍微修改命令:
$ git remote add rack_remote git@github.com:schacon/rack.git
$ git fetch rack_remote
Run Code Online (Sandbox Code Playgroud)
现在,首先启动合并。该命令使用“我们的”策略,因此它还没有真正改变任何东西。
$ git merge -sours --no-commit rack_remote/master
Run Code Online (Sandbox Code Playgroud)
然后修改内容:
$ git read-tree --prefix=rack/ -u rack_remote/master
Run Code Online (Sandbox Code Playgroud)
最后提交(将产生编辑器):
$ git commit
Run Code Online (Sandbox Code Playgroud)
现在完成了:您在子目录中拥有合并的文件及其历史记录。
这可能不是创建具有任意内容的合并提交的唯一方法,而是第一个对我有用的方法。还要注意的是不需要创建本地分支镜像rack_remote/master,可以使用远程引用。
PS:您需要使用 --follow 来跟踪文件历史记录,因为合并重命名了它们。
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |