使用gitignore忽略但不删除文件

如何解决使用gitignore忽略但不删除文件

| 我的git仓库中有一个tmp目录,我希望它仍然存在,但是会被忽略。我将其添加到“ 0”中,但是“ 1”仍然告诉我该目录中文件的更改。我尝试了
git rm -r --cached
,但是将其从远程仓库中删除了。如何停止跟踪对该目录的更改,但仍然允许它存在?我还需要对1个文件执行此操作,但是对它们的更改也会在
.gitignore
之后显示
git status
中。我该怎么办?     

解决方法

        您可以运行以下命令来更新本地git存储库,而不是
.gitignore
git update-index --assume-unchanged <file>
在这种情况下,将在原始存储库中跟踪文件。您可以在本地存储库中对其进行修改,而git绝不会将其标记为已更改。阅读更多信息: http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/-在某些时间被报道死亡(抱歉,不是我的) http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/-另一个涉及相同主题的文件     ,        files0ѭ的确切目的是忽略文件所做的更改,同时允许它们存在。因此,将文件(或目录)添加到“ 0”是您唯一要做的事情。 但是您的问题是git已经在跟踪您要忽略的文件,而
.gitignore
不适用于跟踪的文件。停止此跟踪的唯一方法是告诉git删除它们。通过使用
git rm --cached
,可以防止git删除本地文件,但是其他任何进行更改的存储库都将应用删除。我认为没有办法从您自己的存储库中避免这种情况。您必须在其他存储库上执行某些操作,否则接受文件将被删除。 为了防止在彼此的存储库上被删除,您可以: (显然)将文件备份到某处,进行更改并还原文件, 或另存入10个文件并提交,然后再进行更改。 Git会很好地合并这两个删除内容,而不会涉及到尚未跟踪的文件。     ,        在您的ѭ0the文件的目录名称末尾添加ѭ12,即
tmp/
如果已经在该目录中跟踪了文件,则需要告诉git首先忘记它们(在将目录添加到忽略列表之前)。假设您那里没有任何重要的东西(即可以刮擦):
git rm -rf ./tmp/
git commit -m \"untrack tmp dir\"
mkdir tmp
echo tmp/ >> .gitignore
git add .gitignore ; git commit -m \"add tmp/ to ignore list\"
该目录中的新文件将不会被跟踪。
git rm
--cached
选项仅适用于索引(或多或少地等待更改)。它对工作树或已跟踪或未跟踪的状态没有影响。     ,        .gitignore对跟踪的文件没有影响。 您想要的是在tmp /目录中的文件上设置假设不变的位。这里有一个很好的解释:Git:仅在本地存储库中取消跟踪文件,并将其保存在远程存储库中 此外,用于设置目录的所有文件的一线假定不变-git update-index --assume-unchanged on directory。     ,        听起来您正在尝试跟踪文件(例如
index.php
),将其添加到远程存储库中,然后停止监视它,同时将文件保留在远程中(即在本地更改它时,在远程仓库上保持
index.php
不变)。 据我了解,git无法做到这一点。您可以跟踪文件,也可以不跟踪。如果跟踪文件,则该文件将存在于远程存储库中,并且在提交更改后会更改。如果您不跟踪文件,则该文件在远程存储库中不存在。 由于无法完全使用git做您想做的事,因此,根据您的实际情况,可能还有其他解决方案。例如,当您在本地更改
index.php
时,为什么不希望它在远程更改?文件中是否有用户特定的设置?在这种情况下,您可以执行以下操作:
cp index.php index_template.php
git rm --cached index.php
现在,将index_template.php编辑为您希望它出现在远程仓库中。在自述文件中添加一些内容,以告知使用您的存储库的人员,一旦克隆它们,他们必须将index_template.php复制到index.php并对其进行编辑以适合他们的需求。
git add index_template.php
git add README
git commit -m \'added template index.php file\'
git push
当某人克隆您的存储库时,他们必须创建自己的
index.php
。您使他们变得容易:只需将
index_template.php
复制到
index.php
,然后使用计算机特定的设置对其进行修改。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?