我有一个包含文件的存储库Hello.java.当我编译它时,Hello.class会生成一个额外的文件.
我Hello.class在.gitignore文件中创建了一个条目.但是,该文件似乎仍然被跟踪.
我想知道如何让git忽略Hello.class.
我对一个我不想提交到我的存储库的文件进行了本地更改.它是用于在服务器上构建应用程序的配置文件,但我想在本地使用不同的设置进行构建.当然,当我将'git status'作为要上演的东西时,该文件总是显示出来.我想隐藏这个特定的更改而不是提交它.我不会对文件进行任何其他更改.
经过一番挖掘后,我看到了两个选项:'假设未改变'和'跳过工作树'.这里的前一个问题谈到了它们,但并没有真正解释它们之间的区别.我的问题是:这两个命令有何不同?为什么有人会使用其中一个?
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 是不够的.我需要将这些文件放在存储库中,但是需要在本地进行不需要的更改,以便用户可以进行拉取.
做的时候:
>git status
Run Code Online (Sandbox Code Playgroud)
它显示了"未跟踪文件"下的.pyc文件的大列表.我不希望它显示这些,因为它增加了噪音.
换句话说,我如何一直为所有项目制作git ignore .pyc文件?
编辑
我不是想要一种方法将我被忽略的文件传播给其他人,我的意思是"对于所有项目",这意味着我不想将每个新项目配置为忽略.pyc文件.
UPDATE
我应该补充说我正在使用Windows,我的git是msysgit
用户希望git在所有情况下忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常会进入用户的〜/ .gitconfig中的core.excludesfile指定的文件中.
.gitconfig是文件还是文件夹?我的主目录中没有这样的东西(C:\users\<myusername>\)
UPDATE2
谢谢大家的回复,
我使用以下方法解决了这些问题
>git config --global core.excludesfile c:\git\ignore_files.txt
Run Code Online (Sandbox Code Playgroud)
并将*.pyc放入 c:\git\ignore_files.txt
我一直在使用git --assume-unchanged yacs/settings/development.py我的dev分支中忽略我的本地数据库配置文件.但是当我想切换分支(用于部署)时,我得到一个错误,我仍然有待更改:
% git checkout production
error: Your local changes to the following files would be overwritten by checkout:
yacs/settings/development.py
Please, commit your changes or stash them before you can switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)
这很烦人.我知道如何解决这个问题的唯一方法就是隐藏它:
% git stash
% git checkout production
% git merge dev
% ./deploy.sh
% git checkout dev
% git stash pop
# On branch dev
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# …Run Code Online (Sandbox Code Playgroud) 我正在通过git在Heroku(现在)上部署一个Rails应用程序,并且还希望有一个公共版本供人们查看.有些文件是敏感的,只能在"heroku"分支中提交和推送,而不是"公共"分支.最好的方法是什么?
(我确实知道Heroku的Config变量,这是一个很好的临时解决方案,但是当我需要切换主机时却没那么有趣.)
这两个分支不需要一直同步 - 我可以定期将"master"分支合并到"public"分支并将其分别推送到github.
我尝试了各种各样的事情:
单独的.gitignore文件和"我们的"合并策略 - 这在一开始并不起作用,在搞乱了一段时间后我觉得它变得太复杂了,所以我可以实现一个看似简单的任务
使用自定义exclude文件,并将以下内容添加到.git/config...这根本不起作用:
的.git /配置
[branch "public"]
excludesfile = +info/exclude_from_public
Run Code Online (Sandbox Code Playgroud)
使私有和公共存储库共享相同代码但忽略公共存储库中的敏感文件的最佳方法是什么?
您可以假设没有提交或推送任何代码,即这是一个刚刚初始化的存储库.
(之前已经以各种形式提出了这个问题,但没有一个答案是直截了当的,或者答案看起来真的很笨拙.我只是在这里以非常简单的方式提出这个问题,希望得到一个非常简单的回答.)
我有一个NetBeans文件"nbproject/project.properties",它总是显示在"不提交的更改"部分(当我执行git状态时).我怎么能将它移动到Untracked文件部分(不将其添加到.gitignore)?我尝试了这个命令,git rm --cached但发生的事情是文件在我的本地仓库中显示为未跟踪并在远程访问中被删除但我想要的是将其保存在远程和仅在本地仓库中的未跟踪.
我想知道如何gitignore文件,但只在本地,而不是推动它(因为在项目上工作的其他人不应该得到我在那里添加的gitignore文件的更新.
简单来说,在git状态后我只有:
modified: .gitignore
Run Code Online (Sandbox Code Playgroud)
因为我添加了我的文件以忽略我的gitignore但现在我想要上面的行没有推动它.
我有一些文件,我很少想要提交新版本,但由于IDE设置而经常更改.
git update-index --assume-unchanged meta.xml
Run Code Online (Sandbox Code Playgroud)
是否有可能强行git add meta.xml而不必先申请no-assume-unchanged?
我的工作目录中有几个文件存在于远程代表中,我总是出于特定原因更改它们。
是否可以让 git 在提交时忽略这些文件,同时这些文件不应从远程代表中删除
当我从远程代表中提取更改时,不应合并这些文件
是否有可能做到这一点?
PSgit update-index --assume-unchanged没有帮助,因为git pull无论如何都会尝试合并文件
我在Git中有一个文件,我已对其进行了私人修改.我想将文件保存在Git中,但不想检查我对它的私人修改.
目前我只是在运行时不包含该文件,git add但我甚至不在修改文件列表中看到它.有没有办法做到这一点?
PS .gitignore不起作用,因为我必须从存储库中删除该文件以阻止其被跟踪.我希望文件保留在那里,但不包含我的私人更改.
我使用git在我的存储库中提交更改,
按照这些步骤
git add .
git commit -m "message"
Run Code Online (Sandbox Code Playgroud)
但是注意到文件的克隆,其中进行了更改也存在于存储库中,新文件~的末尾附加了"符号".
为什么会这样?我怎么能在将来阻止它呢?
关于如何用"〜"删除文件的一些想法会很棒
谢谢
我的代码有一个 git 存储库,但还想在子目录中包含一些 Word 文件和 PDF,并且可能想要添加一些二进制文件。我不想存储增量,只想存储这些文件的最新版本。有没有办法在 git 中做到这一点?