如何在Windows上使用msysgit忽略Git中的目录或文件夹?
我对一个我不想提交到我的存储库的文件进行了本地更改.它是用于在服务器上构建应用程序的配置文件,但我想在本地使用不同的设置进行构建.当然,当我将'git status'作为要上演的东西时,该文件总是显示出来.我想隐藏这个特定的更改而不是提交它.我不会对文件进行任何其他更改.
经过一番挖掘后,我看到了两个选项:'假设未改变'和'跳过工作树'.这里的前一个问题谈到了它们,但并没有真正解释它们之间的区别.我的问题是:这两个命令有何不同?为什么有人会使用其中一个?
我团队中的每个开发人员都有自己的本地配置.该配置信息存储在一个文件中,该文件devtargets.rb在我们的rake构建任务中使用.不过,我不希望开发人员破坏对方的devtargets文件.
我的第一个想法是将该文件放在.gitignore列表中,以便它不会被提交给git.
然后我开始想知道:是否可以提交文件,但忽略对文件的更改?所以,我会提交一个默认版本的文件,然后当开发人员在本地机器上更改它时,git会忽略这些更改,当你执行git status或git commit时它不会显示在已更改文件列表中.
那可能吗?这肯定是一个很好的功能......
我已经创建了该文件.gitignore_global并将其放在我的git安装目录中.当我运行命令时:
git config --global core.excludesfile ~/.gitignore
Run Code Online (Sandbox Code Playgroud)
忽略文件中的规则不会应用于我的提交.
当我重命名文件.gitignore并将其放入我的项目根目录时,规则确实适用.
这有什么不对?
我已经多次阅读过这方面的文档了,我仍然没有完全理解这些不同命令之间的差异.也许这只是我,但文档可能更清晰:
http://git-scm.com/docs/gitignore
https://help.github.com/articles/ignoring-files
此外,很多关于这个主题的评论似乎使用了"索引","承诺","跟踪"等词语,有些松散,这使得这三者之间的差异不那么明显.
我当前(公认有限)的理解:
匹配的文件.gitignore将来不会被跟踪.(虽然它们之前可能已被跟踪过.)这意味着它们将不会在未来的git status列表中显示为已更改.
但是,未来的更改仍将与远程回购同步.换句话说,文件仍然是"索引"的,但它们没有被"跟踪".由于.gitignore文件位于项目目录中,因此可以对文件本身进行版本控制.
匹配的文件.git/info/exclude也不会被"跟踪".此外,这些文件永远不会被远程同步,因此永远不会被任何其他用户以任何形式看到.这些文件应该是特定于单个用户的编辑器或工作流的文件.因为它在.git
目录中,所以exclude文件本身不能进行版本控制.
已在其上assume-unchanged运行的文件也不会显示在git status或中git diff.这看起来很相似exclude,因为这些文件既没有"索引"也没有"跟踪".但是,之前要提交的文件的最后一个版本assume-unchanged对于repo中的所有用户仍然可见.
以上解释是否正确?请指正.
如果文件已经在提交中,那么在匹配.exclude和运行文件
之间的功能有何不同assume-unchanged?为什么一个人更喜欢另一种方法?
我的基本用例是我想避免在编译文件中对差异进行排序,但我仍然希望这些编译文件与源文件一起同步.将一个gitignore"d文件仍然推?如果没有,如何管理编译文件的最终部署?
在此先感谢您的帮助.
我想更改跟踪文件以进行开发,但保持跟踪版本不变.
对此的大多数"解决方案"表明
git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)
但它完全没用,因为文件仍然会被结帐或重置更改.是否有更好的解决方案可以在结账和重置命令后继续存在?
我正在本地计算机上进行项目。所以我有不同的数据库详细信息,所以我编辑了2个文件。
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: product/db.py
modified: product/prms.py
Run Code Online (Sandbox Code Playgroud)
现在我不想提交它,并且想在本地忽略它们,因此无论我在这些文件中进行什么编辑,它们都永远不会被推送到远程仓库中
我试着把它们放进去
.git/info/exclude
然后我做到了
git rm --cached <file>
但是系统正在删除它们
要提交的更改:(使用“ git reset HEAD ...”取消登台)
deleted: product/db.py
deleted: product/prms.py
Run Code Online (Sandbox Code Playgroud)
但我也不想删除它们
我该如何解决
编辑:我不想为此推送任何东西到远程仓库。我只想仅从计算机角度忽略对这些文件的编辑。这样,当我上班去然后在该文件中进行更改时,它应该可以正常工作。但在我家中,任何编辑对git都是不可见的
如果我理解正确,为了“忽略”一个文件,所以当我输入时它不会出现 git status或者git add -A我需要将它添加到 .gitignore 文件中。
我的目标是在向 Git 提交更改时永久忽略某个文件夹和文件。
我尝试在我的编辑器中编辑 .gitignore 文件:
config/
src/package.xml
Run Code Online (Sandbox Code Playgroud)
我保存了文件,提交并推送到 Git,从另一个存储库刷新我的项目,键入 git status并仍然看到 xml 文件和文件夹。
还尝试通过选择“放弃更改”来使用 GItHub 桌面,它会自动将以下几行添加到 .gitignore 中:
*.sublime-workspace
config/.local_store
*.sublime-workspace
src/package.xml
Run Code Online (Sandbox Code Playgroud)
但同样的结果...
项目结构:
Full
________|____________
| | |
config .gitignore src
| |
... package.xml
Run Code Online (Sandbox Code Playgroud) 我的项目中有一个带有数据库设置的文件,我已将其设置为一些默认值。跟踪Git并检入该文件。由于将使用各种开发人员机器的不同值来编辑此文件,所以有什么方法可以让我Git忽略该文件的新更改?
我尝试将文件添加到.gitignore文件中,但是由于已跟踪文件,因此不会忽略该文件。在其他情况下这还不错,但是我想知道是否可以在这里做些什么?
update-index --assume-unchanged在Stackoverflow:Ignore Tracked文件中做了回答之后,如何列出这些文件?
我已经在很多文件上做了这个,现在我需要一个列表,以便我可以撤消效果...