git在同一分支和相同的存储库中组合或合并两个文件

时间:2015-01-08 22:08:10

标签: git

我遇到这样的情况:有人在一个文件夹中启动了一个文件并进行了几次提交,然后在另一个文件夹中提交了一份副本并进行了更多提交。我想将这些文件合并或合并到一个文件中并保留历史记录。

第二个副本更新更正,但在错误的文件夹中。旧文件可以被较新的文件覆盖。

我可以复制并粘贴内容,但我会丢失历史记录。

1 个答案:

答案 0 :(得分:1)

git rm <good-location/file>
git commit -m 'Removing bad file form good location'
git mv <bad-location/file> <good-location/file>
git commit -m 'Moving file to correct location'

执行此操作后,以下命令将显示相应的历史记录。

git log --follow -- <good-location/file>

使用-C<some number>%参数可以增加跨副本跟踪文件的几率。有关difflogblame的更多详细信息,请参阅Git文档。

如果您使用的是GUI,例如Eclipse的Git插件,这可能会按预期工作。

没有什么可以强制Git在提交时识别副本。 Git只存储快照,但在事后启发式之后非常好,至少在命令行中。

一些示例用法和输出:

$ git log --format="%h" master.. --name-status  -M100% --follow  -- temp3
0d15571

R100    temp10  temp3
e55bab3

M       temp10
6f16545

M       temp10
0a849e3

M       temp10
1a06161

C100    temp3   temp10
95c8a20

A       temp3