【问题标题】:How do I make to some of the files that I have changed is not offered in the commit?如何使提交中未提供我已更改的某些文件?
【发布时间】:2013-05-27 20:11:27
【问题描述】:

我使用 TortoiseGit 1.8.3。 我更改了其中一个文件:Makefile,但我不想在 Git Commit 中每次都将它提交给我。 我将它添加到“删除并添加到忽略列表”中,但它没有帮助。 如何使提交中未提供我已更改的某些文件?

我希望,Makefile 在远程存储库中是只读的,我可以在本地对其进行编辑,然后 TortoiseGit 不会向我提供提交它。

我想要的 Git-bash:https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

【问题讨论】:

    标签: tortoisegit


    【解决方案1】:

    TortoiseGit 1.8.15、Git 2.6.1 的答案。无需回到命令行,所有功能都可以直接在 TortoiseGit 中使用。我试图总结如何访问此功能的各种方式。 我假设读者知道“假设不变”是什么意思。 Here is easy documentation 关于这个功能。或者关于 --assume-unchanged 或 git ls-files 的原始文档。


    将文件标记为“假定未更改”

    TortoiseGit 中有三种可能性:Commit 对话框、Working Tree 对话框(检查修改)或the Log Messages dialog (only when Working dir changes entry is selected).从这些对话框之一执行以下操作:

    • 右键单击文件并选择条目Assume Unchanged


    Windows Explorer 的任何文件列表中执行以下操作:

    • 右键单击文件并选择属性
    • 转到Git 标签
    • 勾选条目Assume valid/unchanged

    从文件中删除“假定不变”标志(撤消上述操作):

    TortoiseGit 只允许从 Working Tree 对话框中删除标志(检查修改)。

    • 在对话框的左下角:确保勾选选项Show ignore local changeds flagged files
    • 所有带有assumed validskip worktree 标志的文件将显示在正常更改的文件下方
    • 右键单击文件并选择Unflag as skip-worktree or assume-unchanged


    Windows Explorer 的任何文件列表中执行以下操作:

    • 右键单击文件并选择属性
    • 转到Git 标签
    • 取消勾选条目Assume valid/unchanged

    【讨论】:

    • 优秀的答案。
    【解决方案2】:

    如果我对问题的解释正确,Alex 想知道如何撤消使用 Tortoise Git 完成的 --assumed-unchanged 操作。

    你不需要使用命令行 Git 来解决这个问题:

    1. 导航到您在 Windows 资源管理器中执行此操作的文件,
    2. 右键单击并选择属性,
    3. 选择 Git 选项卡,您应该会在“假定有效/未更改”旁边看到一个复选框。
    4. 取消选中它,以后的提交不会忽略它。

    【讨论】:

      【解决方案3】:

      批准的答案很好,但如果您正在寻找此处的对话和选项,您可以得到一个简短的帮助:

      【讨论】:

        【解决方案4】:

        如果没有帮助,则需要进入命令行界面,检查:

        我想要,Makefile 在远程存储库中是只读的,我可以在本地编辑它,然后 TortoiseGIT 不提供给我提交它。

        这是不同的:

        你需要:

        git update-index  --really-refresh --no-assume-unchanged Makefile
        

        这将使对Makefile 的任何本地修改对git“不可见”,同时将Makefile 保持在源代码控制之下。

        如果你want your local modifs to resist a git reset,请这样做;

        git update-index --skip-worktree Makefile
        

        【讨论】:

        • 我制作了 .gitignore,添加了 Makefile,并提交了 .gitignore。我通过 rm 删除 Makefile。状态告诉我:已删除:Makefiles。然后我尝试提交,TortoiseGit 让我再次提交。我提交并推送,并且 Makefile 已从存储库中删除 - 但我不想要它。我想要,Makefile 在远程存储库中是只读的,我可以在本地编辑它,然后 TortoiseGIT 不向我提供提交它。
        • @Alex 好的,我已经编辑了我的答案以满足您的特定需求。
        • 谢谢,它有效!我可以通过 GUI TortoiseGIT->Commit->右键单击文件->(跳过工作树)和(假设不变)来完成。否则我可以通过以下方式查看跳过的文件:git ls-files -t。我可以使用以下命令撤消“跳过”:git update-index --no-skip-worktree。并使用以下命令撤消假设:git update-index --really-refresh --assume-unchanged。但是如何使用 GUI TortoiseGIT 撤消它?
        • @Alex 不确定 TortoiseGit 是否支持撤消。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        • 2013-07-22
        • 1970-01-01
        • 2014-10-22
        • 2019-09-14
        • 1970-01-01
        相关资源
        最近更新 更多