git squash如何处理删除的文件?

git squash如何处理删除的文件?,git,Git,假设我添加了文件A作为提交,然后决定删除文件A。我没有使用git--amend,而是创建了另一个删除文件A的提交,我知道这是一个糟糕的做法。但是,如果我想使用git merge--squash合并我的分支。git squash如何处理这两个提交?它是否在压缩提交中保留了文件A的一些信息,或者文件A在提交中根本不会显示 另一种考虑方法是,如果文件A是1GB文件。当我删除文件a并挤压合并的分支时,我不希望我的git在其历史记录中存储1GB的文件。当执行挤压合并时,git会接受从开始提交到结束提交的所

假设我添加了文件A作为提交,然后决定删除文件A。我没有使用git--amend,而是创建了另一个删除文件A的提交,我知道这是一个糟糕的做法。但是,如果我想使用git merge--squash合并我的分支。git squash如何处理这两个提交?它是否在压缩提交中保留了文件A的一些信息,或者文件A在提交中根本不会显示


另一种考虑方法是,如果文件A是1GB文件。当我删除文件a并挤压合并的分支时,我不希望我的git在其历史记录中存储1GB的文件。

当执行挤压合并时,git会接受从开始提交到结束提交的所有更改,并生成一个等效的提交。因此,如果在压缩的提交中添加和删除了一个文件,那么最终结果是不存在任何文件,Git不会在结果提交中记录关于该文件的任何内容


这些提交引用的对象可能仍然存在于您的存储库中一段时间,即使它们不在分支的历史记录中,因为它们可以被reflog引用(它保存分支的历史记录),但如果它们没有被任何分支、标记或其他引用引用,它们最终将被删除。

。。。压缩提交引用的过时对象在任何引用中都没有链接,因此它们不会通过
git push
推送到上游repo。是正确的,并回答了您提出的关于使用
git merge--squash(必须使用合并引擎)的问题。在合并之前还有另一种方法,使用git reset--soft
,只使用最后的快照。不要担心,如果这现在没有意义,我主要是为将来可能会使用这种方法的读者附上这篇评论。