当我使用git-mv在git中移动文件时,状态显示该文件已被重命名,即使我改变了一些部分,它仍然认为是几乎相同的东西(这很好,因为它让我可以跟踪它的历史) .
当我复制文件时,原始文件有一些我想与新副本关联的历史记录.
我试过移动文件,然后尝试在原始位置重新结账 - 一旦移动git将不允许我签出原始位置.
我试过做一个文件系统副本,然后添加文件 - git将其列为新文件.
有没有办法让git记录文件复制操作的方式与记录文件重命名/移动的方式类似,历史记录可以追溯到原始文件?
我想从一个文件中取出一个函数并将其放入另一个文件中,但要保留责任历史记录.
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
Run Code Online (Sandbox Code Playgroud)
但如果我跑,git blame b.php我只会看到它责备这个新的提交.
我意识到git的工作原理是区分文件的内容.我有一些我想复制的文件.为了绝对防止git变得困惑,是否有一些git命令可用于将文件复制到不同的目录(不是mv,但是cp),并且还可以暂存文件?
如何在推送后在git中恢复意外删除的文件和文件夹.以下是场景.
现在,我可以恢复已删除的文件以及历史记录,然后再回到repo.