我想在我的存储库中包含一个源文件(当有人克隆存储库时将其传递),但默认情况下会忽略它的更改。
git update-index --assume-unchanged ...
不起作用,因为它仅适用于本地索引。我希望所有用户默认忽略该文件。
.gitignore
不起作用,因为如果我通过git add -f ..
跟踪文件,则会跟踪对其的更改。
我正在努力实现如果我svn add
编辑文件然后svn:ignore
编辑它会发生什么。
修改
看起来这在Git中是不可能的,我改变了源文件的组织和构建,依赖于这种旧的Subversion行为。
示例:
$ git clone git@git:gsmith/sandbox.git
snip...
$ cd sandbox/
$ ls -a
. .. .git .gitignore gitignored tracked
$ cat .gitignore
gitignored
$ echo foo >> gitignored
$ git status
# On branch master
# 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: gitignored
#
no changes added to commit (use "git add" and/or "git commit -a")
我希望忽略此文件。
$ git reset --hard HEAD
HEAD is now at 34b1f3d initial setup
$ git rm gitignored
rm 'gitignored'
$ git commit -m "test"
[master cd8199d] test
1 files changed, 0 insertions(+), 1 deletions(-)
delete mode 100644 gitignored
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
$ ls -a
. .. .git .gitignore tracked
$ echo foo >> gitignored
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
现在它被忽略了。但是,克隆存储库的人将无法获取gitignored
。
答案 0 :(得分:0)
.gitignore
。 git rm --cached myfile
。 希望这是你想要的。如果没有,您可以查看this。
答案 1 :(得分:0)
要重新标记您的标题:您要跟踪某个文件,但对其进行的更改未经跟踪。这听起来像是一个矛盾。据推测,您有一些文件以本地方式更改,这些文件对存储库的其他用户没有意义,但也包含每个人都需要的内容。答案当然不是那样做的。有两个主要选项:
拆分文件。一部分是“本地”部分,不需要跟踪,另一部分是核心/共享部分,包含每个人都需要的东西,通常不会修改。您应该在build / deploy / runtime中自动创建空/模板本地文件。
将文件部署为模板,然后使用,复制它。您可以根据需要在build / deploy / runtime自动执行复制。
无论哪种方式,问题都不是“我怎么告诉Git不跟踪我刚刚告诉它跟踪的这个文件?”但是“为什么我要跟踪并不跟踪相同的内容?”