将所有文件添加到除单个文件之外的提交?
我在变更集中有一堆文件,但我想特别忽略一个修改后的文件。 在git status
之后看起来像这样:
# modified: main/dontcheckmein.txt # deleted: main/plzcheckmein.c # deleted: main/plzcheckmein2.c ...
有没有办法我可以做git add
但只是忽略一个文本文件,我不想碰? 就像是:
git add -u -except main/dontcheckmein.txt
git add -u git reset -- main/dontcheckmein.txt
1)开始忽略对单个已经版本化的文件的更改
git update-index --assume-unchanged "main/dontcheckmein.txt"
并撤消该git update-index --no-assume-unchanged "main/dontcheckmein.txt"
在这里检查
2)完全忽略特定的单个文件,以防止它在存储库中被创build
首先看看这个Git全局忽略不工作
并在.gitignore
添加文件的相对path,而不带领./
所以如果你的文件在MyProject/MyFolder/myfile.txt
(其中.git
也在MyProject
),在.gitignore
你只需要把这个MyFolder/myfile.txt
你可以用git check-ignore "MyFolder/myfile.txt"
来确认哪些规则与忽略有关
关于全球忽视
那个链接说的是~/.gitignore_global
; 但该文件与您的项目有关; 所以,如果你把排除模式MyFolder/myfile.txt
放在~/.gitignore_global
,它会起作用,但不会有多大意义。
另一方面,如果你用git config core.excludesfile .gitignore
设置项目, git config core.excludesfile .gitignore
位于MyProject
; 该设置将覆盖~/.gitignore_global
可以有非常有用的规则 …
所以,现在,我认为最好的方法是制作一些脚本,将.gitignore
与.gitignore
中的~/.gitignore_global
混合使用。
最后一个警告
如果你想忽略的文件已经存在于版本库中,除非你这么做,否则这个方法是行不通的: git rm "MyFolder/myfile.txt"
,但是先备份,因为它也会在本地被删除! 你可以稍后复制它…
对于一个文件
git add -u git reset -- main/dontcheckmein.txt
对于一个文件夹
git add -u git reset -- main/*
虽然本jackson是正确的,我想我会添加我一直在使用该解决scheme。 下面是我使用的一个非常简单的脚本(我称之为gitadd)来添加除了我保存在名为.gittrackignore
(非常类似于.gitignore工作方式)的文件中的less数select之外的所有更改。
#!/bin/bash set -e git add -A git reset `cat .gittrackignore`
这就是我现在的.gittrackignore
样子。
project.properties
我正在开发部署时从命令行编译的Android项目。 这个项目依赖于SherlockActionBar,因此它需要在project.properties中引用,但是编译混乱,所以现在我只需键入gitadd
并将所有更改添加到git,而不必每次都不添加project.properties 。
尝试这个:
git checkout – main / dontcheckmein.txt
你在Git的页面上有个很好的例子(第一个例子): http : //git-scm.com/docs/git-reset
我使用git add --patch
相当多,想要这样的东西,以避免不得不通过相同的文件打d 。 我掀起了一个非常hacky几个混帐别名完成工作:
[alias] HELPER-CHANGED-FILTERED = "!f() { git status --porcelain | cut -c4- | ( [[ \"$1\" ]] && egrep -v \"$1\" || cat ); }; f" ap = "!git add --patch -- $(git HELPER-CHANGED-FILTERED 'min.(js|css)$' || echo 'THIS_FILE_PROBABLY_DOESNT_EXIST' )"
在我的情况下,我只是想忽略一些缩小的文件,但是你可以使用像$GIT_EXCLUDE_PATTERN
这样的环境variables作为更一般的用例。