在分割文件时保持git历史记录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我想从一个文件中取出一个函数,并将其放入另一个文件中,但是要保留指责历史。

cp a.php b.php

vim b.php
# delete everything but 1 function

vim a.php
# delete the 1 function

git add a.php b.php
git commit

但如果我运行git blame b.php我只看到它指责这个新的承诺。

提问于
用户回答回答于

实际上,Git并不真正“存储”移动代码;当生成诸如移动代码的责备之类的事情时,这就完成了事后通过检查从提交到提交的整个存储库的状态。

用户回答回答于

维护指责历史的一般规则是分开。移动在编辑之前先提交。我的经验就是这样git blame不需要-C选择。因此,在将文件拆分为新文件的情况下,可以通过两次提交完成:

  1. 将原件复制到新的目的地,确保删除原始的
  2. 从复制的文件中删除额外的部分

在所提供的例子中,这将是:

cp a.php b.php
mv a.php c.php
git add a.php b.php c.php
git commit
vim b.php  # delete everything but 1 function
vim c.php  # delete the 1 function
git add b.php c.php
git commit

扫码关注云+社区