过滤了本地git存储库中的所有提交,更新远程的最佳方法是什么?

过滤了本地git存储库中的所有提交,更新远程的最佳方法是什么?,git,bitbucket,Git,Bitbucket,我运行了一个过滤器,将所有修订版中的所有文件转换为Unix行结尾。我现在看到git声明我的local和remote的所有修订都有分歧。Git状态告诉我进行拉合并。用本地提交替换所有远程提交的最佳方法是什么?您需要执行强制推送。现在的“最佳”方法是使用--force with lease,以确保自上次从远程存储库获取所有信息以来,没有其他人更新过该存储库。当然,如果它是一个私有的(或者大部分是私有的)存储库,就不应该有其他人更新它,您可以使用常规的强制推送 (强制推送的缺点是,如果推送成功,它会使

我运行了一个过滤器,将所有修订版中的所有文件转换为Unix行结尾。我现在看到git声明我的local和remote的所有修订都有分歧。Git状态告诉我进行拉合并。用本地提交替换所有远程提交的最佳方法是什么?

您需要执行强制推送。现在的“最佳”方法是使用
--force with lease
,以确保自上次从远程存储库获取所有信息以来,没有其他人更新过该存储库。当然,如果它是一个私有的(或者大部分是私有的)存储库,就不应该有其他人更新它,您可以使用常规的强制推送


(强制推送的缺点是,如果推送成功,它会使另一个Git用您提供的新提交ID覆盖其分支名称。这会丢失所有旧的提交…因此,任何使用和依赖这些提交的人现在都必须在其远程克隆中处理这一问题。在这种情况下,您确实希望丢失所有旧的提交,so这是一个是否有其他人在使用它们的问题,如果有,你是否关心其他人。)

你需要进行强制推送。现在“最好”的方法是使用
--force with lease
来确保自从你上次从远程存储库获得所有信息后,没有其他人更新了它。如果它是私有的(或者大部分是私有的)存储库,当然,其他人不应该更新它,您可以使用常规的强制推送


(强制推送的缺点是,如果推送成功,它会使另一个Git用您提供的新提交ID覆盖其分支名称。这会丢失所有旧的提交…因此,任何使用和依赖这些提交的人现在都必须在其远程克隆中处理这一问题。在这种情况下,您确实希望丢失所有旧的提交,so这是一个是否有其他人在使用它们的问题,如果有,你是否关心其他人。)

那么,在执行此操作后,更新克隆的正确方法是什么?其他克隆需要
git fetch
,然后重新创建/移植任何私有提交。“最佳方法”的详细信息根据目标的不同而有所不同。如果没有要移植或重新创建的私有提交,则可以
git reset--hard
将每个分支重置为其相应的远程跟踪分支,甚至只需删除克隆并重新克隆(人类的工作越少,计算机/网络的工作就越多,这通常是值得的,因为计算机和网络时间往往非常便宜)。谢谢,这看起来效果很好,速度也很快。我现在处理的唯一问题是我的存储库我过滤了两次提交,每次提交都有一次重复提交。我真的不想也不需要这样做,我甚至还不确定父/子关系是什么样子。如果有人能帮我过滤和避免复制提交我希望能回答这个问题:复制是筛选器分支复制行为的自然结果。保存的原始引用仍然指向原始引用(而且,如果您没有使用
--标记名筛选器,则所有标记都会使用该筛选器,这是非常痛苦的,因为从原始提交ID到复制的提交ID的映射在筛选器分支完成后就消失了)。那么在此操作后更新克隆的正确方法是什么?其他克隆需要
git fetch
,然后重新创建/移植任何私有提交。“最佳方法”的详细信息根据目标的不同而有所不同。如果没有要移植或重新创建的私有提交,则可以
git reset--hard
将每个分支重置为其相应的远程跟踪分支,甚至只需删除克隆并重新克隆(人类的工作越少,计算机/网络的工作就越多,这通常是值得的,因为计算机和网络时间往往非常便宜)。谢谢,这看起来效果很好,速度也很快。我现在处理的唯一问题是我的存储库我过滤了两次提交,每次提交都有一次重复提交。我真的不想也不需要这样做,我甚至还不确定父/子关系是什么样子。如果有人能帮我过滤和避免复制提交我希望能回答这个问题:复制是筛选器分支复制行为的自然结果。保存的原始引用仍然指向原始引用(而且,如果您没有使用
--标记名过滤器,则所有标记都会使用该过滤器,这是非常痛苦的,因为过滤器分支完成后,从原始提交ID到复制的提交ID的映射就消失了)。