- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我了解在 git 的标准工作流程中被忽略和未跟踪的文件之间的区别,至少在操作上是这样。
我很难理解为什么 git 的设计者认为这是一个重要的区别。
IOW,他们为什么不直接自动跟踪每个未被 .gitignore
排除的文件?或 .git/info/exclude
或全局 excludesfile
规则?
需要说明的是:我并不是在批评 git 的设计。我确信这种被忽略/未跟踪的区别是有充分理由的。我只想从设计的角度了解其背后的基本原理。
编辑:让我这样说吧。假设那里有一个工具,我们称它为twit
, 这与 git
相同在各个方面,除了它没有“未跟踪”的概念:文件可以被忽略或被跟踪。有人可以描述一个可以清楚显示 git
的场景吗?优于twit
?
EDIT2:现在回想起来,我意识到我的问题中隐含的假设是“充分的理由”也是“容易理解的”。然而,这个假设并不成立。有可能是twit
的缺点只有在使用它一段时间后才能察觉,这些缺点会导致 twit
的用户改进成最终看起来像git
的东西.
最佳答案
因为不忽略文件并不意味着“跟踪一切”:
git rm
首先。或者更糟的是,它已经被提交和推送,并且您发现其中包含敏感信息)任何“自动”的想法都是可疑的,因为您的工作树的演变是非常动态的,并且跟踪它的过程是由反射引导的增量过程,而不是由工具引导的“自动”过程。
Suppose there was a tool out there, let's call it twit, that was identical to git in every respect except that it had no concept of "untracked"
tracked,在 git 中,意味着“自动索引(或暂存)”,如“准备提交”。
git index 背后的全部想法是允许开发人员增量 跟踪文件,或者对于文件,增量跟踪其内容 (git add --patch
)< br/>所有这些都会随着“默认跟踪的所有内容”而消失。
使用“Why staging directory is also called Index/Git Index?”查看更多信息。
请注意,之前已经考虑过“re-invent the git interface”,默认情况下会暂存/跟踪所有内容。
但是,正如 2010 年的文章“You could have invented git (and maybe you already have!)”中所展示的,git 背后的最初目标是 merge 补丁。当您向工作树添加多个补丁时,您不想盲目地跟踪所有内容,而是慢慢添加或跟踪您需要验证的内容,一个接一个地打补丁。
关于git - 为什么git的设计会区分 "ignored"和 "untracked"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35098593/
根据我的理解,INSERT IGNORE 插入一个新条目,如果它不存在,如果存在,则忽略它。所以我已经尝试这样做了一段时间,但似乎没有用。这是我的尝试: insert insert ignore in
出于某种奇怪的原因,StyleCop 不尊重我的文档规则设置。考虑以下代码: internal class SomeClass { public SomeClass() { }
我有一个带有字符串参数和 bool 返回值的方法。我想确保它总是返回 true 我试过了 myClass.Foo(A.Ignored) .WithReturnType() .Returns(tru
这个问题在这里已经有了答案: Filter invoke twice when register as Spring bean (2 个答案) 关闭 1 年前。 我们正面临 SpringSecuri
将 iconv 与 //TRANSLIT//IGNORE 一起使用从 utf8 转换为 ascii 工作正常;它根据当前语言环境(在我的情况下为 de_DE)将不可转换的字符替换为正确的音译: > e
我有这样的查询: $query="INSERT IGNORE INTO mytable (key, word1, word2) VALUES (1, 'abc', 'def')"; 如果因为主键已经存
我有一个 MySQL 表,如下所示: `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `company_id` int(8) unsigned NOT N
git blame --ignore-revs-file显然是现代 Git 中存在的一个选项。 只有一个问题。它不起作用。 或者至少,它对我不起作用: 您可以将其添加到 shell 脚本中: mkdi
使用docker stack deploy,我可以看到如下信息: Ignoring unsupported options: restart 是否意味着重启政策没有到位? 是否必须在撰写文件之外指定它
我正在尝试检查被 git 忽略的文件,我发现 2 个命令显示相同的结果。 哪个是 git check-ignore * git ls-files --others --ignored --exclud
我想为我的 bash 设置和插件等创建一个 git 仓库。我忽略了所有内容(第 0 行),然后在 repo 中手动添加了我想要的文件/文件夹。 (我必须这样做,因为 repo 在我的 ~ 文件夹中。)
我们有一个集中式开发服务器,每个人都在本地结账处工作。我们如何仅忽略本地存储库中的特定目录,而不忽略集中存储库中的特定目录? 一些背景资料: 该项目是一个Drupal站点,该站点的文件目录一直在变化。
当我向 svn:ignore 条目添加一些东西时,它是存储在存储库中还是存储在我的本地副本中? (在 Tortoise 中,为什么添加到 svn:ignore 的项目会出现在我的更改列表中?) 最佳答
我想确保当我从 svn 结帐时,某些 ide 项目元数据文件没有更新。不幸的是,在创建项目时它已被 checkin 项目,但我有我自己的这些文件版本。 svn:ignore 是否也会在更新期间忽略文件
我有一个目录,其中包含具有各种扩展名的文件。我想在 svn:ignore 中执行与以下 .gitignore 代码等效的操作: *.* # ignore everything !.htaccess #
我在实时服务器上有一个大型项目,我想将其提交给 svn 存储库。我已使用 svn add 将所有文件和目录添加到存储库中. 问题是我想提交一个文件夹结构,但没有它的内容。文件夹名称是: /home/m
当我使用 svn:ignore 从 SVN 中排除文件时然后另一个人尝试提交排除的文件, svn 阻止他?或者他必须在他的电脑上执行相同的命令? 最佳答案 想象一下,如果您有一堆 Java 文件( *
如果已经有一个带有_id的文档,是否可以不重新索引文档?也许像MySQL中的INSERT IGNORE查询一样? 我使用批量API,并且重新索引需要很长时间,因此我只想索引丢失的文档。 可能吗? 最佳
我的房间有问题。 我正在使用带有 Gson 转换器的改造作为其余 api,我想与房间分享 pojos。一般来说它可以工作,但在某些情况下我需要忽略一些字段,因为我有对象列表。我尝试使用 @Ignore
我正在使用 vba 代码从数组中查找值。有些结果是“#N/A”,并且单元格的左上角会出现一个绿色三角形。我想自动删除绿色三角形(忽略错误),但“#N/A”结果应该保留,只需删除绿色三角形即可。 有人知
我是一名优秀的程序员,十分优秀!