我正在本地计算机上处理项目。 所以我有不同的数据库细节,所以我编辑了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
现在我不想提交它并希望在本地忽略它们,这样无论我在这些文件中编辑什么,它们都不会被推送到远程仓库
我试过把它们放进去
.git/info/exclude
然后我做了
git rm --cached <file>
但是系统正在删除它们
要提交的更改: (使用“git reset HEAD ...”来取消演出)
deleted: product/db.py
deleted: product/prms.py
但我也不想删除它们
我该如何解决?
编辑:我不想将任何内容推送到远程回购。我只是想从我的compuer视角忽略对这些文件的编辑。所以,当我上任,然后我在该文件中制作chnage然后它应该正常工作。但是从我的家里,任何编辑都应该对git不可见答案 0 :(得分:2)
方法1:
不要提交每个开发人员应该有所不同的文件。我的所有配置文件(例如config.yaml
)都位于.gitignore
;对于每一个,我将有另一个文件(例如config.yaml.template
),它将向开发人员显示他们需要的样子,我只会在结构发生变化时进行编辑。
方法2:
git update-index --assume-unchanged product/db.py product/prms.py
将允许您更改文件,git
将不会提交它们。如果您确实希望再次提交,请使用--no-assume-unchanged
重新运行。
答案 1 :(得分:1)
似乎没有问题。 Git通知您那些使用的文件存储在存储库中,并且正在从存储库中删除。
这正是你想要的。 git从存储库中删除它们的事实必然意味着您要从本地文件系统中删除它们。事实上,因为你已经使用了
git rm --cached
它们应该仍然在您的文件系统中。
如果在任何时候有一个提交被推送到您的分支上并添加了这些文件,那么将必须推送另一个将删除这些文件的提交。
如果这些文件遵循某种模式,您可能会发现将它们添加到 .gitignore 非常有用。例如,它非常承诺添加
*.class
/bin
你的 .gitignore 中的因为你不想推送类文件(如果你正在做Java / Scala)或者往往生活在 / bin 中的二进制文件
答案 2 :(得分:0)
如果要忽略提交中的文件,则应使用&#39; stash&#39;方法。
git stash --keep-index
这将隐藏所有未提交的更改 - 您可以随时取消存储它们。 现在,您可以继续工作,而不会将这些文件推送到您的远程存储库..
请记住,您可以继续进行协作,同时仍然保留这些更改。
如果您使用像bitbucket这样的东西,那么您可以使用“来源”#39;您正在使用的分支,并从上次提交中获取代码并修复这两个文件。
答案 3 :(得分:0)
另一种选择是使用:git update-index --skip-worktree path/to/file
在实践和哲学上存在一些差异。主要是在需要修改文件时使用 skip-worktree
。当 git 可以安全地假设文件未更改并相应地优化其行为时,请使用 assume-unchanged
。
这里给出了非常详尽的解释:Git - Difference Between 'assume-unchanged' and 'skip-worktree'