我克隆了一个包含一些.csproj文件的项目.我不需要/喜欢我的本地csproj文件被Git跟踪(或者在创建补丁时被提起),但显然它们在项目中是必需的.
我已添加*.csproj到我的LOCAL .gitignore,但文件已经在repo中.
当我输入git status时,它会显示我csproj对跟踪或提交补丁不感兴趣的更改.
如何从我的个人仓库中删除这些文件的"跟踪"(但是将它们保存在源代码中以便我可以使用它们)以便在我执行状态(或创建补丁)时看不到更改?
是否有正确/规范的方法来处理这种情况?
有时,git建议git rm --cached取消暂存文件git reset HEAD file.我什么时候应该使用哪个?
编辑:
D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# a
nothing added to commit but untracked files present (use "git add" to track)
D:\code\gt2>git add a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to …Run Code Online (Sandbox Code Playgroud) 我对一个我不想提交到我的存储库的文件进行了本地更改.它是用于在服务器上构建应用程序的配置文件,但我想在本地使用不同的设置进行构建.当然,当我将'git status'作为要上演的东西时,该文件总是显示出来.我想隐藏这个特定的更改而不是提交它.我不会对文件进行任何其他更改.
经过一番挖掘后,我看到了两个选项:'假设未改变'和'跳过工作树'.这里的前一个问题谈到了它们,但并没有真正解释它们之间的区别.我的问题是:这两个命令有何不同?为什么有人会使用其中一个?
我团队中的每个开发人员都有自己的本地配置.该配置信息存储在一个文件中,该文件devtargets.rb在我们的rake构建任务中使用.不过,我不希望开发人员破坏对方的devtargets文件.
我的第一个想法是将该文件放在.gitignore列表中,以便它不会被提交给git.
然后我开始想知道:是否可以提交文件,但忽略对文件的更改?所以,我会提交一个默认版本的文件,然后当开发人员在本地机器上更改它时,git会忽略这些更改,当你执行git status或git commit时它不会显示在已更改文件列表中.
那可能吗?这肯定是一个很好的功能......
我的存储库中有一个现有的Visual Studio项目.我最近在我的项目下添加了一个.gitignore文件,我假设它告诉Git忽略文件中列出的文件.
我的问题是所有这些文件都已被跟踪,据我所知,Git不会忽略在将规则添加到此文件之前已被跟踪的文件以忽略它.
有人建议使用:git rm --cached并手动取消跟踪它们,但这将永远让我一个接一个地浏览它们.
我想删除存储库并重新创建它,但这次使用.gitignore文件,但必须有更好的方法来执行此操作.
我遇到了与此帖相同的问题 - git update-index --assume-unchanged返回错误 但我不明白答案被标记为正确(我没有看到它解释了如何解决这种情况)
我这样做并得到这个错误:
$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
Run Code Online (Sandbox Code Playgroud)
那么我该怎么做才能解决?
git 1.7.12
我想将给定目录下的所有文件标记为假设未更改.
1)git update-index --assume-unchaged dir/给出"忽略路径".
2)git update-index --assume-unchaged dir/*快速失败,因为它会遇到未被跟踪的文件,因此它给出"致命:无法标记文件"并退出.
3)尝试生成要标记的文件列表. cd进入所需目录然后运行git ls-files | tr '\n' ' ' | git update-index --assume-unchanged.这不会产生任何错误消息,但不会成功标记文件.命令的第一部分git ls-files | tr '\n' ' '正确生成了我要标记的所有文件的空格分隔列表.如果我将该命令的输出复制并粘贴到命令行,则该git update-index命令有效.什么不使用管道?
不,我添加dir到.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中的文件!我不认为忽视实际上是正确的词; 我希望文件在git中,但我不希望能够对它们进行更改.对某些人来说,这似乎是一件奇怪的事情,但是有很多很多实例需要这个功能.我现在需要它的一个例子是当使用带有CMS的git时; 如果没有不断变化的文件,CMS将无法运行,但我不希望在初始提交后提交这些文件.(这对SVN和Tortoise来说非常容易).
工作流程:
这是我尝试过的:
.gitignore - 文件永远不会输入git.如果文件已经在缓存中,则.gitignore文件不会执行任何操作./.git/info/exclude - 与.gitignore相同的问题,但仅适用于本地回购.我使用.git/info/exclude跟踪了一些文件夹和文件:
doc
*.txt
doc/*.txt
doc/somefile.txt
Run Code Online (Sandbox Code Playgroud)
但是git status表示它仍然被跟踪:
$ git st
# On branch dev
# 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: doc/somefile.txt
Run Code Online (Sandbox Code Playgroud)
其他奇怪的事情ls-files表明它没有跟踪:
$ git ls-files --ignored --exclude-from=.git/info/exclude
doc/somefile.txt
$ touch /tmp/xxx
$ git ls-files --ignored --exclude-from=/tmp/xxx
$
Run Code Online (Sandbox Code Playgroud)
我在git版本1.8.1.5
所以我得出结论,我可能会误解某些事情或做错事.有什么好主意吗?
我有一个名为“ gradle.properties我要删除它的表单跟踪文件”的文件,因此当我推送到GitHub时,它不会更新远程仓库
git ×11
gitignore ×4
command-line ×1
filefilter ×1
git-index ×1
git-reset ×1
git-rm ×1
github ×1
pipe ×1