代码之家  ›  专栏  ›  技术社区  ›  Pro Q Rich Lysakowski PhD

如何阻止Git推送已提交的本地文件

  •  0
  • Pro Q Rich Lysakowski PhD  · 技术社区  · 6 年前

    我有一个叫 Thinking.py 我把它添加到我的每一个项目中,这是我自己对项目中正在发生的事情的个人日志。

    我最近创建了一个flask和python模板,我想在Github上公开发布,但我不希望它包含thinking.py,因为它包含我自己的个人评论。

    我补充说 思辨 对我 .git/info/exclude 但是当我把项目上传到gihub时, 思辨 文件仍然出现。

    注意 思辨 在我编辑之前包含在以前的提交中 .git/信息/排除 .

    我怎么能做到这一点 思辨 上载到GitHub,但所有更改和提交 思辨 保持它们在我的电脑上?

    2 回复  |  直到 6 年前
        1
  •  1
  •   torek    6 年前

    Git不推 文件夹 . Git推送 提交 .如果文件在某个提交中,而您强制提交,那么它们会得到该文件。如果你不推动提交,他们可能已经有了这个文件,但是他们没有得到你不推动的提交。

    如果你想绝对确定你不会意外地推动任何承诺 拥有那个文件,通过不提交文件来确保没有这样的提交。否则,请注意推送哪个提交:推送具有该文件的任何提交时,它们就拥有该文件(因为它们具有该提交,而该提交具有该文件)。

    如果需要从现有提交中删除该文件,则也必须删除提交本身,因为没有提交可以 曾经 一点也不改变。完全移除它们并不容易,但是 可以 完成。您可能需要可以使用的新的和改进的提交 代替 有文件的旧提交。以一种自动化的方式来做这件事,用手做这件事并不有趣,你可能会想用 git filter-branch 这是一个非常复杂的git命令,有大量的选项,可以对存储库做很多,或者 BFG 是一个非常有限的子集的Java工具 Git过滤器分支 可以,但是速度更快,而且更方便使用。 See the many StackOverflow questions about the BFG.

        2
  •  0
  •   Josip Domazet    6 年前

    thinking.py文件是否也由git根据最新的更改进行更新? 基于您的问题,我认为Github中的thinking.py文件只是您以前提交的结果,无论如何都不包含最新的更改。

    您可以尝试完全删除该文件(确保不会意外删除本地文件):

    Remove a file from a Git repository without deleting it from the local filesystem

    希望我能帮忙!