git 合并或合并同一分支和同一存储库中的两个文件
git combine or merge two files in the same branch and same repository
我有这样一种情况,有人在一个文件夹中启动了一个文件并进行了几次提交,然后在另一个文件夹中提交了一个副本并进行了更多次提交。我想将这些文件合并或组合成一个文件并保留历史记录。
第二个副本较新且正确,但在错误的文件夹中。旧文件可以被新文件覆盖。
我可以复制和粘贴内容,但我会丢失历史记录。
git rm <good-location/file>
git commit -m 'Removing bad file from 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>%
参数来增加您的文件被跨副本跟踪的机会。有关 diff
、log
和 blame
的更多详细信息,请参阅 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
我有这样一种情况,有人在一个文件夹中启动了一个文件并进行了几次提交,然后在另一个文件夹中提交了一个副本并进行了更多次提交。我想将这些文件合并或组合成一个文件并保留历史记录。
第二个副本较新且正确,但在错误的文件夹中。旧文件可以被新文件覆盖。
我可以复制和粘贴内容,但我会丢失历史记录。
git rm <good-location/file>
git commit -m 'Removing bad file from 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>%
参数来增加您的文件被跨副本跟踪的机会。有关 diff
、log
和 blame
的更多详细信息,请参阅 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