如何在 git 中使用 gitignore 命令
Posted
技术标签:
【中文标题】如何在 git 中使用 gitignore 命令【英文标题】:How to use gitignore command in git 【发布时间】:2012-09-19 19:11:24 【问题描述】:我第一次在 git 上工作。我已经在 github 上推送了我的分支,它把所有的库和文档都推送到了 github。现在我能做什么以及如何使用 gitignore 命令来避免再次出现同样的错误。
【问题讨论】:
.gitignore
是您的 git 根目录中的一个文件。为您要忽略的文件添加名称模式,这些文件将被自动忽略。
我在 ubuntu 上。你能说一下git根目录的路径吗
这是你使用git init
的目录。 .git
目录位于那里。
对于那些不知道如何使用 gitignore - 去gitignore.io 你可以输入你正在使用的所有工具(symfony、Cakephp、ZendFramework、wordpress、grunt、sublime text、netbeans、依此类推,你得到了演习......)它会为你生成 git ignore 文件。如果您不知道如何使用 gitignore,我认为学习它的最佳方法是查看一些好的用例示例(例如由 gitignore.io 生成的示例。如果您想从 cmd 行使用它(极客方式) 请参阅本教程:vimeo.com/70609819
【参考方案1】:
因此,根据您所说,这些文件是您不想删除但也不想推送到github
的库/文档。假设您的项目位于文件夹 your_project
和一个 doc 目录中:your_project/doc
。
-
从项目目录中删除它(不实际删除它):
git rm --cached doc/*
如果您还没有.gitignore
,您可以在项目文件夹中创建一个:project/.gitignore
。
将doc/*
放入.gitignore
暂存文件以提交:git add project/.gitignore
提交:git commit -m "message"
。
将您的更改推送至github
。
【讨论】:
你能告诉我如何编写 .gitignore 文件吗?即,如何在 .gitignore 文件中写入我想忽略的文件夹和文件的路径。谢谢 感谢您的回答。在提交之前,我必须运行 git add -A 嗨,gitignore 只是一个纯文本文件。它实际上是 .gitignore (DOTgitignore)。只需输入您希望 git 忽略的文件/文件类型的名称,每行一个。示例:sujee.net/tech/articles/gitignore ^web.archive.org/web/20120914233504/http://sujee.net/tech/…【参考方案2】:如果你没有 .gitignore 文件,请先使用:
touch .gitignore
然后这个命令在你的 gitignore 文件中添加行:
echo 'application/cache' >> .gitignore
注意换行
【讨论】:
不需要先touch
文件。如果文件不存在,>>
与 >
同义。 echo
在输出末尾附加一个换行符。你可以用-n
阻止它。如果你需要各种忽略,要么做各种回声,要么使用-e
,如下:echo -e "**/cache/\n**.pyc" >> .gitignore
。双星号也匹配递归挖掘到文件夹中的所有文件。在文件夹末尾使用/
,以防万一。
@Andrew tl;dr:使用echo "file_to_be_ignored" >> .gitignore
添加每个忽略的文件,无需执行任何其他操作。以/
结尾的文件夹名称为echo "**/modules/" >> .gitignore
。
为什么我的评论被删除了【参考方案3】:
git ignore 是 git 中的一个约定。设置一个名为.gitignore
的文件
将忽略该目录中的文件以及与
文件包含的模式。最常见的用途是只有一个文件
像这样在顶层。但是你可以在你的目录中更深地添加其他人
结构以忽略更多模式或停止为该目录忽略它们
然后是更深的。
同样,您可以“取消忽略”结构更深的某些文件或特定的
子集(即,您忽略 *.log 但仍想跟踪 important.log)
指定以!
开头的模式。例如:
*.log !important.log
将忽略所有日志文件,但会跟踪名为 important.log 的文件
如果您要跟踪要忽略的文件,请将其删除,然后将模式添加到 你 .gitignore 文件并添加所有更改
# delete files that should be ignored, or untrack them with
# git rm --cached <file list or pattern>
# stage all the changes git commit
git add -A
从现在开始,您的存储库将不再跟踪它们。
如果你想清理你的历史记录,你可以
# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10
然后用e
或edit
标记每个提交。保存计划。现在 git 将重播
您的历史记录在您标记为 e 的每个提交处停止。在这里你删除
你不想要的文件,git add -A
然后git rebase --continue
直到你
完成。你的历史将是干净的。确保你像你一样告诉你的同事
将不得不强制推动,他们将不得不重新调整他们尚未推动的内容。
【讨论】:
【参考方案4】:在你的 git 根目录中有一个名为 .gitignore
的文件。它是一个文件,而不是一个命令。您只需插入要忽略的文件的名称,它们将自动被忽略。例如,如果您想忽略所有以~
结尾的 emacs 自动保存文件,则可以添加以下行:
*~
如果要从分支中删除不需要的文件,可以使用git add -A
,即“removes files that are no longer in the working tree”。
注意:我所说的“git根目录”只是你第一次使用git init
的目录。您还可以在这里找到.git
目录。
【讨论】:
我不想要的已经推送的文件会发生什么【参考方案5】:如果您没有 .gitignore 文件。您可以通过
创建一个新的touch .gitignore
您可以通过在 .gitignore 文件中输入以下命令来排除文件夹
/folderName
将此文件推送到您的 git 存储库中,这样当新人克隆您的项目时,他不必再次添加相同的文件
【讨论】:
【参考方案6】:gitignore git有几种使用方式
由特定文件名指定。例如,忽略文件 名为readme.txt,只需将readme.txt写入.gitignore文件即可。 你也可以写文件扩展名。例如,到 忽略所有 .txt 文件,写入 *.txt。 您也可以忽略整个文件夹。例如你想忽略 名为 test 的文件夹。然后只需在文件中写入 test/ 即可。只需创建一个 .gitignore 文件并写入您想忽略的任何内容 一个示例 gitignore 文件将是:
# NPM packages folder.
node_modules
# Build files
dist/
# lock files
yarn.lock
package-lock.json
# Logs
logs
*.log
npm-debug.log*
# node-waf configuration
.lock-wscript
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Jest Coverage
coverage
.history/
您可以在git documentation gitignore找到更多信息
【讨论】:
【参考方案7】:在我的 Mac 上,我发现了这个文件 .gitignore_global
..它隐藏在我的主目录中,所以请使用 ls -altr
来查看它。
我添加了我希望 git 忽略的 eclipse 文件。内容如下:
*~
.DS_Store
.project
.settings
.classpath
.metadata
【讨论】:
当我将 .gitignore 文件放在我的项目文件夹中时,它在本地搞乱了我的 eclipse 项目。你知道为什么会发生这种情况以及如何预防吗?现在我只是远离 .gitignore。 我不再使用 Eclipse。现在是 Inteilji以上是关于如何在 git 中使用 gitignore 命令的主要内容,如果未能解决你的问题,请参考以下文章