在我的代码库中,我发现有些文件在 git ls-tree
中不存在,但是在 git ls-files
中存在。我所做的是:
在工作目录中
~/wsp$ git clone ~/repo/project1
~/wsp$ rm project1/file1
~/wsp$ git add -A
~/wsp$ git commit -m'deleted file1'
~/wsp$ git push
在仓库目录中
~/repo$ git log
<deleted file1 commit msg is there>
~/repo$ git ls-tree
<file1 is not in ls-tree>
~/repo$ git ls-files
<file1 is still there!>
~/repo$ find . -name file1
~/repo/file1
看起来,尽管在工作目录中删除了file1并使用git-rm命令将其提交并推送到repo,但file1仍然存在于repo目录中。
我该如何将一个git目录中已删除或重命名的文件推送到另一个git目录中?
提前感谢您的帮助 :)
~/vcs/project1
克隆并推送,为什么要检查~/repo
? - Shahbazgit ls-tree
需要你提供一个树对象,如果git ls-tree
只显示了使用指南,请确认是否正确提供了树对象。同时,git ls-tree
不会递归操作除非你提供了-r
选项。 - CB Baileygit ls-files
在~/repo
中工作,那么这意味着这是另一个非裸克隆~/vcs/project
。 您需要合并/重置/变基/检出某些内容,以便从~/wsp
推送的更改进入~/repo
的工作目录中。 - CB Bailey