【问题标题】:Can I commit a file with git, but automatically ignore it when doing a git svn dcommit?我可以使用 git 提交文件,但在执行 git svn dcommit 时会自动忽略它吗?
【发布时间】:2012-03-08 15:39:16
【问题描述】:

我现在开始在 SVN 办公室将 Git 用于我的个人工作流程,因此 git-svn 是我将非常依赖的工具。我遇到的一个我不知道如何解决的问题是如何在一个方向上忽略。

对我来说,具体的用例是我们的 ant 构建文件引用了 svn 和 svnversion 之类的东西。显然,如果我使用 git-svn,我不打算使用其中任何一个。我已将本地 build.xml 中的它们替换为 git 等效项,它们工作得很好。

但是,我显然不想在 git svn dcommit 中提交该更改。我想将此更改保留在本地,并在本地提交,这样我就不会丢失它,但我不希望它再次提交到主 SVN 存储库,因为它几乎会破坏整个公司对 SVN 的使用, 如果我做。 this question 中介绍了一个单独使用 SVN 的类似案例。

是否有任何解决方案可以让我在本地提交 build.xml,继续从 SVN 获取 build.xml 更改(其中也有很多与 SVN 无关的内容),并且永远不要使用 dcommit 提交它,而不是每次我尝试提交时都跳过箍?

【问题讨论】:

    标签: git git-svn gitignore svnignore


    【解决方案1】:

    是的,你可以。

    如您所述,您不能 gitignore 已跟踪的文件。但是您可以做的是告诉您的索引它应该假装某些文件不存在任何更改:

    git update-index --assume-unchanged <file>
    

    如果您想停止忽略对该文件的更改(例如,因为您对 build.xml 进行了更改,您确实需要与其他团队成员共享),请使用:

    git update-index --no-assume-unchanged <file>
    

    警告:如果你直接用git add &lt;file&gt;添加文件,它会假设你真的想添加那个文件,--assume-unchanged指令会被忽略。

    【讨论】:

    • 这似乎可行,但我担心的是,从技术上讲,我不会将其提交给 Git 存储库,对吧?我希望它提交给 Git 存储库(如果它们以某种方式在本地被还原/删除,我不想再次进行这些更改),但我希望 git svn 忽略它们。我不喜欢进行不致力于任何事情的工作更改的想法。但它可以作为一种潜在的解决方案。谢谢!
    • 你不能这样做,而且有充分的理由。如果可能,那么您将推送其哈希值与您的仓库中本地的哈希值不同的提交。这将是一个很大的禁忌,并且会违反存储库的完整性,这比意外提交要糟糕得多。
    • 明白。感谢您的快速解释。我想我只需要想办法修改我的工作流程。我想我会用“build.xml”修改创建一个单独的分支,并让它保持打开/标记,以便我可以恢复文件,以防我在任何其他分支上出错。感谢您的解决方案,约翰!
    • 不幸的是,我遇到了一个问题,即使文件被假定为未更改,由于未提交的更改,git 不允许我切换分支。很遗憾,因为这是阻止我将 Git 作为我工作流程的常规部分的主要因素之一。
    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多