如何在git中使用gitignore命令


119

我是第一次使用git。我将我的分支推送到github上,并将所有库和文档推送到github中。现在我该怎么办以及如何使用gitignore命令来避免再次发生相同的错误。


1
.gitignore是git根目录中的文件。为要忽略的文件添加名称模式,文件将被自动忽略。
LonelyWebCrawler 2012年

我在ubuntu上。能否请您说出git根目录的路径
user1559230 2012年

2
这是您使用的目录git init。该.git目录位于那里。
LonelyWebCrawler 2012年

2
对于那些不了解如何使用gitignore的人-转到gitignore.io,您可以键入所有正在使用的工具(symfony,CakePHP,ZendFramework,wordpress,grunt,sublime text,netbeans等) ...),它将为您生成git ignore文件。如果您不知道如何使用gitignore,我认为学习它的最好方法是看一些很好的用例(例如gitignore.io生成的示例)。如果要从cmd行使用它(怪异的方式),请参见此教程:vimeo.com/70609819
DevWL '16

Answers:


162

因此,根据您所说的,这些文件是您不想删除但也不想推送到的库/文档github。假设您在文件夹your_project和doc目录中有您的项目your_project/doc

  1. 从项目目录中删除它(实际上并没有删除它): git rm --cached doc/*
  2. 如果还没有.gitignore,则可以在项目文件夹中创建一个:project/.gitignore
  3. 放入doc/*.gitignore
  4. 暂存文件以提交: git add project/.gitignore
  5. 提交:git commit -m "message"
  6. 将更改推送到github

能否请您告诉我如何编写.gitignore文件。即,如何在.gitignore文件中写入要忽略的文件夹和文件的路径。谢谢
user1559230 '20

感谢您的回答。在提交之前,我必须运行git add -A
user1559230 2012年

4
嗨,gitignore只是纯文本文件。它实际上是.gitignore(DOTgitignore)。只需输入要让git忽略的文件/文件类型的名称,每行一个即可。例如:sujee.net/tech/articles/gitignore
u19964 '20


42

如果您没有.gitignore文件,请首先使用:

touch .gitignore

然后使用以下命令在gitignore文件中添加行:

echo 'application/cache' >> .gitignore

小心新行


不需要touch首先文件。>>>该文件尚不存在相同。echo在输出末尾添加换行符。您可以使用停止该操作-n。如果您需要各种忽略,请执行各种回显或使用-e,如下所示:echo -e "**/cache/\n**.pyc" >> .gitignore。双星号也与所有递归搜索到文件夹的文件匹配。/以防万一,请在文件夹末尾使用。
mazunki

1
@Andrew tl; dr:使用添加每个忽略的文件echo "file_to_be_ignored" >> .gitignore,无需执行其他任何操作。以/as 结尾的文件夹名称echo "**/modules/" >> .gitignore
mazunki,

为什么我的评论遭到删除
安德鲁

12

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。您的历史记录将是干净的。确保您告诉同事,因为您将不得不强行推销,而他们将不得不重新整理尚未推销的内容。


8

您的git根目录中有一个名为的文件.gitignore。这是一个文件,而不是命令。您只需要插入要忽略的文件名,它们就会自动被忽略。例如,如果您想忽略所有以结尾的emacs自动保存文件~,则可以添加以下行:

*~

如果要从分支中删除不需要的文件,可以使用git add -A,它“ 删除不再在工作树中的文件 ”。

注意:我所谓的“ git根目录”只是您git init第一次使用的目录。您也可以在其中找到.git目录。


我不想要的已推送文件将发生什么情况
user1559230 2012年

4

如果您没有.gitignore文件。您可以通过创建一个新的

touch .gitignore

您可以通过在.gitignore文件中输入以下命令来排除文件夹

/folderName

将此文件推送到您的git存储库中,这样,当一个新人克隆您的项目时,他不必再次添加该文件


2

有几种方法可以使用gitignore git

  • 通过特定的文件名指定。例如,要忽略
    名为readme.txt 的文件,只需在.gitignore文件中写入readme.txt。
  • 您也可以写文件扩展名。例如,要
    忽略所有.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文档gitignore上找到更多信息


1

在我的Mac上,我发现此文件.gitignore_global ..它在我的主目录中处于隐藏状态,因此请ls -altr进行查看。

我添加了我希望git忽略的eclipse文件。内容如下:

 *~
.DS_Store
.project
.settings
.classpath
.metadata

当我将.gitignore文件放到我的项目文件夹中时,它在本地弄乱了我的eclipse项目。您知道为什么会发生这种情况以及如何预防吗?现在,我只是远离.gitignore。
JesseBoyd

我不再使用日食了。现在是Inteilji
j2emanue '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.